如何构建一个动态的Web scrapler/Crawler:Python

2024-09-22 10:33:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我不太清楚这个问题的复杂性,但我想我可以试一试。在

我如何创建一个网络爬虫/刮刮器(不确定我需要哪个)来获得所有CEO薪酬比率数据的csv。https://www.bloomberg.com/graphics/ceo-pay-ratio/

我想进一步分析这些信息,但是,我不确定如何检索动态网页。我已经建立了网页刮刀过去,但为简单的网站和功能。在

如果你能给我指出一个好的资源或张贴下面的代码,我将永远在你的债务。在

提前谢谢!在


Tags: csv数据https网络com网页www爬虫
2条回答

请注意,抓取此网站可能会被标记为“违反服务条款”,此特定网站使用多种技术来避免基于脚本引擎的抓取。在


如果您检查网页,您可能会发现,当您单击“下一步”按钮时,没有XHR请求。因此您可以推断内容只加载了一次。在

如果按大小对请求数据进行排序,您将发现所有数据都是从json file加载的


使用python(但是需要在运行python脚本之前打开页面):

import requests
data=requests.get("https://www.bloomberg.com/graphics/ceo-pay-ratio/live-data/ceo-pay-ratio/live/data.json").json()
for each in data['companies']:
    try:
        print "Company",each['c'],"=> CEO pay ratio",each['cpr']
    except:
        print "Company",each['c'],"=> no CEO pay ratio !"

给你:

^{pr2}$

也许最好在webrowser中打开json,然后将其保存在本地,而不是尝试请求网站。在

在本地将json保存为data.json之后,可以使用以下命令读取:

import json

with open("data.json","r") as f:
    cont=f.read()

data=json.loads(cont)

for each in data['companies']:
    try:
        print "Company",each['c'],"=> CEO pay ratio",each['cpr']
    except:
        print "Company",each['c'],"=> no CEO pay ratio !"

由于该网站似乎是动态加载内容,我相信您将需要Selenium,一个自动化浏览器的库,和{a2},一个分析结果网页的库。在

因为你感兴趣的部分网站只是一个网页,你只需要检索数据,我建议你首先调查如何将数据加载到网页。您可以使用与脚本相同的参数直接向其服务器发出请求,以直接检索您感兴趣的数据。在

要提出这样的请求,您可以考虑使用另一个名为requests的库。在

相关问题 更多 >