Обратите внимание, что очистка этого сайта может быть помечена как " как нарушение условий обслуживания ", этот конкретный сайт использует несколько технологий, чтобы избежать очистки, основанной на скриптовом движке.
Если вы просматриваете веб-страницу, вы можете заметить, что при нажатии следующей кнопки запрос XHR отсутствует. Таким образом, вы можете сделать вывод, что контент загружается только один раз.
Если вы отсортируете данные запроса по размеру, вы обнаружите, что все данные загружаются из json-файла
Использование 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 !"