BeautifulSoup HTML解析功能将无法运行两次

时间:2019-01-05 08:09:17

标签: python selenium selenium-webdriver beautifulsoup selenium-chromedriver

我正在使用硒和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还是很陌生,因此非常感谢这里的任何指导。谢谢!

2 个答案:

答案 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_)

希望对您有所帮助!