网站Forbes Most Admired Companies包含50家公司的列表,我正在尝试解析该列表并将其导出到csv
文件
代码我只能得到20,因为向下滚动页面会加载。有没有办法模拟向下滚动或完全加载?
from lxml import html
import requests
def schindler(max): # create a list of the companies
page = requests.get('http://beta.fortune.com/worlds-most-admired-companies/list/')
tempContainer = html.fromstring(page.content)
names = []
position = 1
while position <= max:
names.extend(tempContainer.xpath('//*[@id="pageContent"]/div[2]/div/div/div[1]/div[1]/ul/li['+str(position)+']/a/span[2]/text()'))
position = position + 1
return names
(那只是列表创建,.csv导出器没问题)
然后我将其打印到chek,列表中只显示20个项目
print(schindler(50))
答案 0 :(得分:1)
您似乎可以将数据作为JSON获取。网址中的20个似乎是要开始的等级和30个项目的数量。
示例代码:
url = "http://fortune.com/api/v2/list/1918408/expand/item/ordering/asc/20/30"
resp = requests.get(url)
for entry in resp.json()['list-items']:
print(entry['rank'], entry['name'])