Python无检查似乎使用Be​​autifulSoup失败

时间:2014-08-05 08:36:09

标签: python beautifulsoup nonetype

我看过类似的帖子,这些帖子与我的案子很接近,但我的结果似乎出乎意料。

import BeautifulSoup
import re

soup = BeautifulSoup.BeautifulSoup(<html page of interest>)
if (soup.find_all("td", attrs= {"class": "FilterElement"}, text= re.compile("HERE IS TEXT I AM LOOKING FOR")) is None):
    print('There was no entry')
else:
    print(soup.find("td", attrs= {"class": "FilterElement"}, text= re.compile("HERE IS THE TEXT I AM LOOKING FOR")))

我明显过滤掉了实际的HTML页面,以及正则表达式中的文本。其余的完全一样。我收到以下错误:

Traceback (most recent call last):
  File "/Users/appa/src/workspace/web_forms/WebForms/src/root/queryForms.py", line 51, in <module>
    LoopThroughDays(form, id, trailer)
  File "/Users/appa/src/workspace/web_forms/WebForms/src/root/queryForms.py", line 33, in LoopThroughDays
    if (soup.find_all("td", attrs= {"class": "FilterElement"}, text= re.compile("HERE IS THE TEXT I AM LOOKING FOR")) is None):
TypeError: 'NoneType' object is not callable

我知道文本有时会丢失。但是我认为我设置if语句的方式正好能够捕获它何时丢失,因此NoneType

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

看起来这只是一个错字。它应该是soup.findAll而不是soup.find_all。我试过运行它,它适用于校正。所以完整的程序应该是:

import BeautifulSoup
import re

soup = BeautifulSoup.BeautifulSoup(<html page of interest>)
if (soup.findAll("td", attrs= {"class": "FilterElement"}, text= re.compile("HERE IS TEXT I AM LOOKING FOR")) is None):
    print('There was no entry')
else:
    print(soup.find("td", attrs= {"class": "FilterElement"}, text= re.compile("HERE IS THE TEXT I AM LOOKING FOR")))<html page of interest>