gpt4 book ai didi

python - BeautifulSoup "find"行为不一致 (bs4)

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:10 24 4
gpt4 key购买 nike

我正在 NFL 的网站上抓取球员统计数据。我在解析网页并尝试访问包含我正在查找的实际信息的 HTML 表时遇到问题。我成功下载了该页面并将其保存到我正在工作的目录中。作为引用,我保存的页面可以在 here 中找到。 。

# import relevant libraries
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup

soup = BeautifulSoup(open("1998.html"))
result = soup.find(id="result")
print result

我发现在某一时刻,我运行了代码,结果打印了我正在寻找的正确表格。其他时候,它不包含任何东西!我假设这是用户错误,但我无法弄清楚我错过了什么。使用“lxml”没有返回任何内容,我无法让 html5lib 工作(解析库??)。

感谢任何帮助!

最佳答案

首先,您应该先阅读文件的内容,然后再将其传递给 BeautifulSoup。

soup = BeautifulSoup(open("1998.html").read())

其次,通过将内容打印到屏幕来手动验证 HTML 中是否存在相关的.prettify() 方法使数据更易于阅读。

print soup.prettify()

最后,如果该元素确实存在,则以下内容将能够找到它:

table = soup.find('table',{'id':'result'})

我编写的一个简单的测试脚本无法重现您的结果。

import urllib
from bs4 import BeautifulSoup

def test():
# The URL of the page you're scraping.
url = 'http://www.nfl.com/stats/categorystats?tabSeq=0&statisticCategory=PASSING&conference=null&season=1998&seasonType=REG&d-447263-s=PASSING_YARDS&d-447263-o=2&d-447263-n=1'

# Make a request to the URL.
conn = urllib.urlopen(url)

# Read the contents of the response
html = conn.read()

# Close the connection.
conn.close()

# Create a BeautifulSoup object and find the table.
soup = BeautifulSoup(html)
table = soup.find('table',{'id':'result'})

# Find all rows in the table.
trs = table.findAll('tr')

# Print to screen the number of rows found in the table.
print len(trs)

每次都会输出51

关于python - BeautifulSoup "find"行为不一致 (bs4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31057586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com