0

我正在尝试使用此网站为一家公司获取盘中价格:Enel Intraday

当网站拉取数据时,它会将它们分成数百个页面,这使得从中提取数据非常耗时。使用 insomnia.rest(第一次),我一直在尝试使用 URL GET 或尝试找到返回这些表值但没有成功的实际 javascrip 函数。

检查搜索按钮后,我发现 JS 函数名为“searchIntraday”,并使用名为“intraday_form”的表单作为输入。

检查 Trova 按钮

我基本上试图在 1 次调用中获取以下数据,而不必浏览所有标签页,所以一整天看起来像这样:

Time    Last Trade Price    Var %   Last Volume Type
5:40:49 PM  7.855   -2.88   570 AT
5:38:17 PM  7.855   -2.88   300 AT
5:37:10 PM  7.855   -2.88   290 AT
5:36:06 PM  7.855   -2.88   850 AT
5:35:56 PM  7.855   -2.88   14,508,309  UT
5:29:59 PM  7.872   -2.67   260 AT
5:29:59 PM  7.871   -2.68   4,300   AT
5:29:59 PM  7.872   -2.67   439 AT
5:29:59 PM  7.872   -2.67   3,575   AT
5:29:59 PM  7.87    -2.7    1,000   AT
5:29:59 PM  7.87    -2.7    1,000   AT
5:29:59 PM  7.87    -2.7    1,000   AT
5:29:59 PM  7.87    -2.7    4,000   AT
5:29:59 PM  7.87    -2.7    300 AT
5:29:59 PM  7.87    -2.7    2,000   AT
5:29:59 PM  7.87    -2.7    200 AT
5:29:59 PM  7.87    -2.7    400 AT
5:29:59 PM  7.87    -2.7    500 AT
5:29:59 PM  7.872   -2.67   1,812   AT
5:29:59 PM  7.872   -2.67   5,000   AT

.....................................................

Time    Last Trade Price    Var %   Last Volume Type
9:00:07 AM  8.1 0.15    933,945 UT

那天从第 1 页迭代到第 1017 页!

我查看了以下页面寻求帮助:

JS 爬取文章

Stackflow 与答案类似的问题

失眠报告的屏幕副本

4

1 回答 1

0

数据似乎不是由 javascript 生成的,而是通过加载页面生成的。下图是我在加载下面的链接时得到的响应。您可以看到请求的位置与页面上的位置相匹配,并且表格的 HTML 与页面响应一起发送。

响应中的 HTML 表明页面是在服务器端而不是客户端生成的。不幸的是,除非您找到一种可以一次性浏览并查看所有想要的结果的方法,否则您将不得不遍历每个页面。如果您确实设法找到了一个神奇的网址,您可以直接处理那个网址。

https://www.borsaitaliana.it/borsa/azioni/contratti.html?isin=IT0003128367&lang=en&page=10

在此处输入图像描述

我决定试一试,看看我能得到什么样的表现。下面是遍历前 100 页的完整脚本。

import pandas as pd
import requests

url = "https://www.borsaitaliana.it/borsa/azioni/contratti.html?isin=IT0003128367&lang=en&page="

df = pd.concat([
    pd.read_html(requests.get(url + str(page)).content)[0] 
    for page in range(100)
])

df.to_csv('enel.csv', index=False)

在我的机器上运行它,100 页花了 1.25 分钟。

$ time python scrape.py 

real    1m16.914s
user    0m4.039s
sys 0m0.729s

这将是每只股票大约 15 分钟。我想这对于 30 只股票来说是 7.5 小时,假设它们的长度都差不多。你可以在一夜之间运行它,它会在早上为你准备好。

于 2020-01-31T19:00:33.620 回答