Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建动态Web Scraper/Crawler:Python_Python_Web Scraping_Web Crawler_Finance_Data Retrieval - Fatal编程技术网

如何构建动态Web Scraper/Crawler:Python

如何构建动态Web Scraper/Crawler:Python,python,web-scraping,web-crawler,finance,data-retrieval,Python,Web Scraping,Web Crawler,Finance,Data Retrieval,我不太确定这个问题的复杂性,但我想我可以试一试 我如何创建一个网络爬虫/刮板(不确定我需要哪个)来获取所有CEO薪酬比率数据的csv 我想进一步分析这些信息,但是,我不知道如何检索动态网页。我在过去曾构建过web scraper,但只针对简单的网站和功能 如果你能给我指出一个好的资源或张贴下面的代码,我将永远欠你的债 提前谢谢 由于网站似乎动态加载内容,我相信您将需要一个自动化浏览器的库,以及一个解析生成网页的库 由于您感兴趣的网站部分只是一个页面,您只需要检索数据,我建议您首先调查数据是如何加

我不太确定这个问题的复杂性,但我想我可以试一试

我如何创建一个网络爬虫/刮板(不确定我需要哪个)来获取所有CEO薪酬比率数据的csv

我想进一步分析这些信息,但是,我不知道如何检索动态网页。我在过去曾构建过web scraper,但只针对简单的网站和功能

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


提前谢谢

由于网站似乎动态加载内容,我相信您将需要一个自动化浏览器的库,以及一个解析生成网页的库

由于您感兴趣的网站部分只是一个页面,您只需要检索数据,我建议您首先调查数据是如何加载到页面的。您可以使用与脚本相同的参数直接向他们的服务器发出请求,直接检索您感兴趣的数据,这似乎是合理的


提出这样一个请求,你可以考虑使用另一个叫“./P>>P>”的库。注意到这个网站可能被标记为“违反服务条款”,这个特定的网站使用多个技术来避免基于脚本引擎的擦除。


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

如果按大小对请求数据进行排序,您会发现所有数据都是从


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

这给了你:

Company Aflac Inc => CEO pay ratio 300
Company American Campus Communities Inc => CEO pay ratio 226
Company Aetna Inc => CEO pay ratio 235
Company Ameren Corp => CEO pay ratio 66
Company AmerisourceBergen Corp => CEO pay ratio 0
Company Advance Auto Parts Inc => CEO pay ratio 329
Company American International Group Inc => CEO pay ratio 697
Company Arthur J Gallagher & Co => CEO pay ratio 126
Company Arch Capital Group Ltd => CEO pay ratio 104
Company ACADIA Pharmaceuticals Inc => CEO pay ratio 54
[...]

在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 !"

谢谢感谢反馈导入请求数据=请求。获取(“对于数据中的每个['companys']:尝试:打印(“Company”,每个['c'],“=>首席执行官薪酬比率”,每个['cpr']),除了:打印(“Company”,每个['c'],“=>无首席执行官薪酬比率!”)输入这段代码后,我遇到了一个回溯错误…您是否可以为本地保存的.json或.csv重写代码?非常感谢:)回溯(最近一次调用):文件“\CEOpayratio.py”,第2行,在data=requests.get(“文件”)中“C:\Users\Seane\AppData\Local\Programs\Python\lib\site packages\requests\models.py”,第896行,在json返回complexjson.loads(self.text,**kwargs)文件中“C:\Users\Seane\AppData\Local\Programs\Python\Python 36\lib\site packages\simplejson_init_uuu.py”,第518行,在加载返回默认的解码器.decode中谢谢!非常感谢你的帮助
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 !"