我正在使用BeautifulSoup进行一些爬网,并希望链接查找呼叫,例如:
soup.find('div', class_="class1").find('div', class_="class2").find('div', class_="class3")
当然,只要找不到div之一,它就会中断,并抛出一个
AttributeError: 'NoneType' object has no attribute 'find'
有没有一种方法可以修改NoneType来添加诸如以下的find方法
class NoneType:
def find(*args):
return None
这样我就可以做
thing = soup.find('div', class_="class1").find('div', class_="class2").find('div', class_="class3")
if thing:
do more stuff
代替
thing1 = soup.find('div', class_="class1")
if thing1:
thing2 = thing1.find('div', class_="class2")
if thing2:
thing3 = thing2.find('div', class_="class3")
etc.
我想我可以通过使用具有XPath功能的解析器来做类似的事情,但是问题并不特定于此用例,而是更多关于修改/覆盖内置类的问题.