使用Pyquery,Requests和Gadget选择器提取Web元素

时间:2018-03-16 11:19:46

标签: python python-2.7 web-scraping python-requests pyquery

我可以使用以下代码从此website中提取表值。

from pyquery import PyQuery as pq
import requests

url = "https://finviz.com/screener.ashx"
content = requests.get(url).content
doc = pq(content)
Tickers = doc(".screener-link-primary").text()

print(Tickers)

但我只能提取前20个值。页面末尾有一个“下一个”按钮,其中包含指向下一组值的链接。

如何自动提取此链接,获取新页面并提取新的值集并附加到我现有的列表中?

1 个答案:

答案 0 :(得分:1)

您可以遍历所有页面,如:

$rsm = new ResultSetMapping();
$rsm->addScalarResult('lastCode', 'lastCode');

$sqlMaxCode = sprintf("SELECT MAX(LPAD(SUBSTRING(code, 1, instr(code, '/')-1), 6, '0')) as lastCode
    FROM provider
    WHERE entry_date >= '%s'", date("Y") . "-01-01");

$nQuery = $em->createNativeQuery($sqlMaxCode, $rsm);
$rows = $nQuery->getSingleResult();
$this->get('logger')->info(print_r($rows, true));

请注意,对于第一页counter = 1 while True: url = "https://finviz.com/screener.ashx?v=111&r=%d" % counter content = requests.get(url).content counter += 20 参数(我猜这是起始条目索引),第二页r1,第三页为21 } ...所以我对41

使用+ 20增量

您还应该在最后一页到达时添加counter。通常会检查是否有新数据可用,如果没有 - break