如何构建动态Web Scraper/Crawler:Python
我不太确定这个问题的复杂性,但我想我可以试一试 我如何创建一个网络爬虫/刮板(不确定我需要哪个)来获取所有CEO薪酬比率数据的csv 我想进一步分析这些信息,但是,我不知道如何检索动态网页。我在过去曾构建过web scraper,但只针对简单的网站和功能 如果你能给我指出一个好的资源或张贴下面的代码,我将永远欠你的债如何构建动态Web Scraper/Crawler:Python,python,web-scraping,web-crawler,finance,data-retrieval,Python,Web Scraping,Web Crawler,Finance,Data Retrieval,我不太确定这个问题的复杂性,但我想我可以试一试 我如何创建一个网络爬虫/刮板(不确定我需要哪个)来获取所有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 !"