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

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页面.

有人能解释一下这里可能发生的事情吗?

推荐答案

内容是由JavaScript动态加载/呈现的——有时你也可以通过刷新页面上看到它,然后spacex会显示很短的时间,因为资源是先加载和呈现的.仅仅几分之一秒后,实际的公司信息就呈现出来了.

因此,try 使用api来代替一个公司:

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

或前100名:

https://foundersfund.com/wp-json/wp/v2/company?per_page=100

判断您的浏览器dev tools for network流量,了解如何找到此类信息.

Example
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

Python相关问答推荐

如果索引不存在,pandas系列将通过索引获取值,并填充值

如何通过多2多字段过滤查询集

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

如何将ctyles.POINTER(ctyles.c_float)转换为int?

当多个值具有相同模式时返回空

如何检测背景有噪的图像中的正方形

. str.替换pandas.series的方法未按预期工作

将两只Pandas rame乘以指数

如何访问所有文件,例如环境变量

如何让Flask 中的请求标签发挥作用

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

OR—Tools CP SAT条件约束

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

从spaCy的句子中提取日期

在单个对象中解析多个Python数据帧

pandas fill和bfill基于另一列中的条件

Python:从目录内的文件导入目录

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

类型对象';敌人';没有属性';损害';