我可以使用以下代码从此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个值。页面末尾有一个“下一个”按钮,其中包含指向下一组值的链接。
如何自动提取此链接,获取新页面并提取新的值集并附加到我现有的列表中?
答案 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
参数(我猜这是起始条目索引),第二页r
为1
,第三页为21
} ...所以我对41
+ 20
增量
您还应该在最后一页到达时添加counter
。通常会检查是否有新数据可用,如果没有 - break