我正在使用硒和bs4来抓取网页。这是Python脚本的片段:
html = driver.page_source
soup = soup(html, 'html.parser')
print(soup)
soup = soup(html, 'html.parser')
print(soup)
第一个print(soup)
返回已解析的html。第二个print(soup)
返回[]
。这是为什么?一般来说,我对Scraping和Python还是很陌生,因此非常感谢这里的任何指导。谢谢!
答案 0 :(得分:2)
在第一个表达式中,您将soup
重新绑定为已解析的BeautifulSoup对象:
soup = soup(html, 'html.parser')
打印后,您现在将调用此重新绑定的对象(soup
);例如不是最佳选择的变量名的情况?
此soup()
构造函数的来源是什么?
如果您坚持使用直接使用BeautifulSoup()
的正统方法来调用构造函数/创建对象,那么它会更加简洁-且更不易出错-
from bs4 import BeautifulSoup
# your code to get some html
soup = BeautifulSoup(html, 'html.parser')
print(soup)
soup = BeautifulSoup(html, 'html.parser')
print(soup)
答案 1 :(得分:1)
因为您使用名为“ soup”的变量覆盖了soup()函数。
尝试一下:
html = driver.page_source
soup_ = soup(html, 'html.parser')
print(soup_)
soup_ = soup(html, 'html.parser')
print(soup_)
希望对您有所帮助!