Python 在使用请求和美化组的页面上找不到元素

Python 在使用请求和美化组的页面上找不到元素,python,web-scraping,beautifulsoup,python-requests,Python,Web Scraping,Beautifulsoup,Python Requests,我正在努力搜刮我最喜欢的大学足球队的网站。在这个网页上有两个表我想刮去,我写的代码很容易刮去第一个表。我可以把它放在一个数据框中,然后放到Excel中。由于某种原因,我无法从站点中删除第二张表(防御表)。我尝试了许多不同的方法来刮第二张桌子。我尝试了查找所有表,第一个表很好,但第二个表找不到。我试过使用表中列出的属性,但也不起作用。任何帮助都将不胜感激!下面是我用来尝试刮取第二个表的代码: 从lxml导入html 导入请求 从bs4导入BeautifulSoup 导入csv 作为pd进口熊猫 游

我正在努力搜刮我最喜欢的大学足球队的网站。在这个网页上有两个表我想刮去,我写的代码很容易刮去第一个表。我可以把它放在一个数据框中,然后放到Excel中。由于某种原因,我无法从站点中删除第二张表(防御表)。我尝试了许多不同的方法来刮第二张桌子。我尝试了查找所有表,第一个表很好,但第二个表找不到。我试过使用表中列出的属性,但也不起作用。任何帮助都将不胜感激!下面是我用来尝试刮取第二个表的代码:

从lxml导入html
导入请求
从bs4导入BeautifulSoup
导入csv
作为pd进口熊猫
游戏摘要https://www.sports-reference.com/cfb/schools/iowa/2018/gamelog/'
game\u summary\u response=requests.get(game\u summary,timeout=30)
game\u summary\u content=BeautifulSoup(game\u summary\u response.text,'html.parser')
deffensive\u table=game\u summary\u content.find('table',id='defence')
防守型游戏摘要=防守型表格。全部查找('tr')
当我运行程序时,我只得到以下错误:

Traceback (most recent call last):
  File "ncaa_stats_scrape.sh", line 24, in <module>
    defensive_game_summary = deffensive_table.find_all('tr')
AttributeError: 'NoneType' object has no attribute 'find_all'
回溯(最近一次呼叫最后一次):
文件“ncaa_stats_scrap.sh”,第24行,在
防守型游戏摘要=防守型表格。全部查找('tr')
AttributeError:“非类型”对象没有“全部查找”属性

您发布的错误基本上意味着
deffensive\u表的值是
None

这就是为什么当你在上面做一个
查找所有
时,你会得到一个
属性错误
。一个可能的修复方法是在之前执行
None
检查

deffensive_table = game_summary_content.find('table', id='defense')
if deffensive_table is None:
    defensive_game_summary = deffensive_table.find_all('tr')
else:
    < some other logic to handle this case >
deffensive\u table=game\u summary\u content.find('table',id='defence'))
如果DEFFENU表为None:
防守型游戏摘要=防守型表格。全部查找('tr')
其他:
<处理此案例的其他逻辑>

您要查找的表包含在返回的HTML中,但作为HTML注释。页面包含一些JavaScript,这些JavaScript在页面加载后执行,以取消对表的注释,使其显示。获取内容最简单的方法是使用一个在检索页面后可以执行JavaScript的库,如
请求\u html
。例如:

来自请求\u html导入HTMLSession
url='1〕https://www.sports-reference.com/cfb/schools/iowa/2018/gamelog/'
session=HTMLSession()
r=session.get(url)
r、 html.render()
table=r.html.find('table#defence')
打印(table.html)

你能看到什么是
deffensive\u表
输出吗?嗨,克里斯。谢谢你的建议。我尝试了上面的示例,似乎可以找到页面上的第二个表,但似乎只找到属性行,而没有找到表的任何内容。例如,当我打印示例中的变量表时,我刚刚收到:[],这是正确的表,但有办法从内部获取所有的“tr”和“td”。再次感谢你的建议!请参阅文档,其中有一些访问元素的示例。它可能类似于
表[0]。查找('tr')
,然后可以对其进行迭代并获取其属性。