请注意,抓取此网站可能会被标记为“违反服务条款”,此特定网站使用多种技术来避免基于脚本引擎的抓取。
如果您检查网页,您可能会发现当您单击下一步按钮时,没有 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 !"
哪个给你:
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
[...]
在浏览器中打开 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 !"