html - 为什么通过beautifulsoup导入的html和实际的html不一样?
问题描述
嗨,我正在制作一个程序,用于在 stackoverflow 中抓取搜索词的结果。
我编写了代码以获得某些结果的最大页面。
我需要知道抓取的最大页数,但是通过开发者工具查看的html结构和通过beautifulsoup获取的html信息是不一样的。
网址:https ://stackoverflow.com/jobs?q=vue
下面是通过开发者工具获取类名为 s-paginatino 的 div 标签的信息。
from bs4 import BeautifulSoup
import requests
url = "https://stackoverflow.com/jobs?q=vue"
result = requests.get(url)
soup = BeautifulSoup(result.text,"html.parser")
print(soup)
为此,编写代码并输出soup 的结果以查找s-pagination。结果如下。
输入url时显示的最大页面数是2,但是通过beautifulsoup得到的结果是43,所以无法得到我想要的结果。当你运行程序时,它最多不会刮掉2 个与 vue 相关的页面,还会刮掉带有不相关关键字的作业。
我无法弄清楚问题发生在哪里,所以我问了一个问题。任何帮助,将不胜感激。
解决方案
尝试指定User-Agent
HTTP 标头。没有它,我也会收到 43 的值。
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0'}
url = 'https://stackoverflow.com/jobs?q=vue'
soup = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')
print(soup.select_one('.s-pagination a')['title'])
印刷:
page 1 of 8
推荐阅读
- amazon-web-services - 将 aws cli 切换到启用 mfa 的跨帐户
- r - R中的UTF-8编码
- angularjs - 如何等待http响应赋值?
- azure - Azure Cosmos DB - 创建容器时出现“RequestDisallowedByPolicy”错误
- python - 如何打印系列中第 75 个百分位以上的值?使用分位数(熊猫)
- solr - solr 查询“msg”:“未定义的字段文本”,“代码”:400
- python - 如何使用 python 使光标在游戏中移动(例如:第一枪射击游戏)
- npm - npm 全局安装正在安装,但命令不起作用
- go - 为什么 goroutine 饿死了?
- scala - 更新 Dotty 中数组给定索引处的元素(未来的 Scala3)