python-3.x - 使用 BS4 的 Web 抓取返回不正确的 html 内容
问题描述
我试图通过从 Yocket 中抓取数据来找到一些关于被特定大学录取的学生的 GPA、GRE 和工作经验的统计数据。虽然我的代码在第一页上正常工作(https://yocket.in/applications-admits-rejects/588-new-york-university/2),但是当我尝试抓取后面的页面时单击导航栏下方(https://yocket.in/applications-admits-rejects/588-new-york-university/2?page=2),代码不起作用。经过分析,我发现为后面的页面收到的 HTML 内容是不正确的,即收到的 html 内容对应于其他页面。此外,接收到的内容对于 page=3、page=4 等不正确。爬取的内容仅对 page=1 是正确的。此 URL 适用于 NYU,但是在 page=2 上接收到的不正确内容的这种行为对于所有其他大学的 URL 都是相同的但是,我只想要承认的状态。因此,需要找到一种方法来浏览第 2 页中的不同页面。Url 将是 /2?page= 部分。
这是我的代码:
import requests
from bs4 import BeautifulSoup
page_num=2
url="https://yocket.in/applications-admits-rejects/588-new-york-university/2?page=" + str(page_num)
page = requests.get(url)
soup=BeautifulSoup(page.content)
print(soup.prettify())
解决方案
它发出警告,因为没有明确定义解析器,只需将features = "lxml"传递给 BeautifulSoup 构造函数,它将解决问题。
import requests
from bs4 import BeautifulSoup
page_num=2
url="https://yocket.in/applications-admits-rejects/588-new-york-university/2?page=" + str(page_num)
page = requests.get(url)
soup=BeautifulSoup(page.content,features = "lxml")
print(soup.prettify())
希望有帮助!
推荐阅读
- c# - 使用 C# 从 Office 365 for business 发送邮件
- ios - Swift 协议属性的不同默认实现
- python - 无法在命令行中运行 python 脚本
- c# - 将 Python 中的字符串传递给 C# 中的字符串
- python - VSCode 中的 Python:绘图中的数据未更新
- python - TypeError:不支持的格式字符串传递给 NoneType.__format__
- c - Win32 通用控件现在使用 Direct2D 吗?
- amazon-web-services - 如何在 AWS 上创建集群期间动态更新 kubeconfig?
- python - 在线 Python 套接字
- python-3.x - python中的LinkedStacks