首页 > 解决方案 > 为什么通过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 相关的页面,还会刮掉带有不相关关键字的作业。

我无法弄清楚问题发生在哪里,所以我问了一个问题。任何帮助,将不胜感激。

标签: htmlbeautifulsoup

解决方案


尝试指定User-AgentHTTP 标头。没有它,我也会收到 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

推荐阅读