从请求库中获取方法似乎返回主页而不是特定 URL



我是Python和面向对象编程的新手。我正在尝试构建一个简单的网络爬虫,以从 basketball-reference.com 上的NBA合同数据创建数据帧。我曾计划将请求库与BeautifulSoup一起使用。但是,get 方法似乎返回站点的主页,而不是与我给出的 URL 相关的页面。

我提供了一个团队合同页面的URL(https://www.basketball-reference.com/contracts/IND.html(,但是当我打印html时,它看起来属于主页。

我无法在网上找到任何关于其他任何人有这个问题的文档......

我正在使用Spyder IDE。

# Import library
import requests
# Assign the URL for contract scraping
url = 'https://www.basketball-reference.com/contracts/IND.html'
# Pull contracts page
page = requests.get(url)
# Check that correct page is being pulled
print(page.text)

这似乎应该非常简单,所以我不明白为什么控制台显示的html显然与我试图指向的页面无关。我没有收到任何错误,只是主页上的html。

在检查 repl.it 上的代码并亲自访问网页后,我可以确认您正在提取正确页面的 HTML。page变量包含数据表及其信息...以及页面的广告、联系信息、社交媒体按钮和链接、广告拦截检测脚本以及网页上的其他所有内容。您的问题不在于您得到了错误的页面,而在于您获得了整个页面,而不仅仅是数据。

您需要挑选出您感兴趣的确切位 - 也许通过选择表及其子元素?表的 HTML ID 是contracts- 这应该是一个很好的起点。

(尝试在浏览器中访问该页面,右键单击页面上的任意位置,然后单击"查看页面源代码" - 这就是您的程序正在拉入的内容。网页的内容比大多数人意识到的要多得多!

不过,作为警告,体育参考有一个数据使用政策,禁止其网站上的网络爬虫/蜘蛛。我建议检查(并使用(他们链接的免费网站之一;否则,您可能会被IP禁止。

简单地在终端上打印 get 请求的结果不会很有帮助,因为返回的 HTML 页面内容很长 - 您的终端将截断打印的响应。我假设在您的情况下,该网站可能在其他页面中也重复使用了主页的某些部分,因此可能会令人困惑。

我建议将响应写入文件,然后在浏览器中打开文件。您将看到您的代码正在拉取正确的页面。

最新更新