网站列表解析器只检索20个项目,如何使网站加载更多

时间:2017-03-11 20:01:49

标签: python parsing

网站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))

1 个答案:

答案 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'])