【发布时间】:2020-07-01 19:21:37
【问题描述】:
我编写了一个简单的程序来从https://stats.nba.com 中抓取数据。我的代码在这里工作得很好,因为它能够完美地从网站上获取数据:
chrome_options = webdriver.ChromeOptions()
d = webdriver.Chrome(ChromeDriverManager().install(),options=chrome_options)
d.get('https://stats.nba.com/teams/advanced/?sort=W&dir=-1')
scrape = BeautifulSoup(d.page_source, 'html.parser').find('table')
for row in scrape.find_all('tr'):
for col in row.find_all('td'):
#...more parsing code here
但是,只要我添加
chrome_options.add_argument('--headless'),整个代码失败,我得到AttributeError: 'NoneType' object has no attribute 'find_all'。
为什么会这样?我到处找,找不到解决办法。谢谢!
编辑:问题似乎是d.page_source 为无头和非无头提供了不同的结果。有谁知道为什么会有差异?
【问题讨论】:
-
看来你应该检查一下 d.page_source 的内容,看看是什么问题。
-
@Chris 我刚刚查了一下,奇怪的是,d.page_source 的无头输出没有我想要的表;但是, d.page_source 的非无头输出包含该表。为什么会存在这种差异?
-
如果没有 recaptcha 或类似内容,可能是页面在不同视口下呈现不同。
-
@borisdonchev 我该如何解决这个问题?
-
尝试添加一些东西来改变它,例如:
chrome_options.add_argument("--start-maximized")
标签: python selenium web-scraping beautifulsoup selenium-chromedriver