我使用requests和beautifulsoup来抓取一个网页,为什么我的程序中的html与inspect元素中的不一样?

问题描述 投票:0回答:1

我目前正在从事一个网络抓取项目,在从 https://Foundersfund.com/portfolio 抓取数据时遇到了问题。我成功地检索了每个公司页面的所有链接。然而,在测试其中一些链接时,我注意到输出的 HTML 与检查元素工具中显示的不同。因此,我无法检索任何信息。

import requests
from bs4 import BeautifulSoup

headers = { 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
    }

response = requests.get("https://foundersfund.com/company/figma/", headers=headers)

soup = BeautifulSoup(response.content, "lxml")

soup

输出返回此:

Google Colab

我本想检索有关 Figma 的信息,但结果却是有关 SpaceX 的信息。有趣的是,当尝试查看其他公司的页面时,例如 https://Foundersfund.com/company/spotify/https://Foundersfund.com/company/airbnb/,我在 SpaceX 上遇到了同样的问题反而出现。我已经排查这个问题好几天了,怀疑页面本身可能有问题。看起来,当我加载该公司的页面时,它会短暂显示 SpaceX 页面,然后再显示所请求的公司页面。

有人可以解释一下这里可能发生了什么吗?

python html web-scraping beautifulsoup python-requests
1个回答
0
投票

内容是动态呈现的,因此请尝试对单个公司使用 api:

https://foundersfund.com/wp-json/wp/v2/company?slug=figma

或前 100 名:

https://foundersfund.com/wp-json/wp/v2/company?per_page=100
示例
import requests

headers = { 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
    }

response = requests.get('https://foundersfund.com/wp-json/wp/v2/company?slug=figma', headers=headers).json()
response
© www.soinside.com 2019 - 2024. All rights reserved.