【问题标题】:Beautifulsoup, unable to compare stringsBeautifulsoup,无法比较字符串
【发布时间】:2015-05-12 10:04:29
【问题描述】:

我正在尝试编写一个网络蜘蛛来收集一些链接和文本。 我有一张我正在使用的表格,每行的第二个单元格中有一个数字,我要做的就是获取该数字,如果它是我需要的,然后获取单元格 2 和 4 中的链接和文本。

一切正常,只是我似乎无法将单元格中的数字与我拥有的数字列表进行比较。

我使用单元格[1].get_text() 获取数字(我为每一行创建一个所有单元格的列表),这工作正常并且 type() 返回'class'str'',我还确保将我的数字列表转换为字符串。

但是当我尝试比较它们时,它总是返回'False'

import bs4

file = open(r"some html file", 'rb')
rng_lst = [str(x) for x in range(5, 43)]


soup = bs4.BeautifulSoup(file)

table = soup.findAll('table')[0]
for row in table.findAll('tr'):
    cells = row.findAll('td')
    if len(cells) >= 6:
        check = cells[1].get_text()
        for n in rng_lst:
            if n == check:
                # do stuff

我已经尝试了所有我能想到的方法,但我总是得到 'False',使用 == 或 'is' 不起作用,如果我尝试使用 'in' 它确实有效,但如果我需要 5 号单元格我也可以得到 15 或 25。

【问题讨论】:

  • 抱歉无法发布 html,因为它与工作相关。

标签: python python-3.x beautifulsoup


【解决方案1】:

很可能,您只需要去除从单元格中获取的文本

check = cells[1].get_text(strip=True)

这仍然是一个猜测,但是一个“受过教育”的猜测。

【讨论】:

  • 哇,谢谢你成功了,介意我问一下 strip 是做什么的吗?
  • @AlexZel 基本上,它会修剪一个字符串。
  • @AlexZel trim 表示删除字符串前面和结尾的空格。
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2015-04-21
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多