从多个网络抓取中提取单个数据点

Extract single data point from multiple, webscraping

我正在尝试从以下筛选器中的 table 中提取股票代码(第 3 列):

https://chartink.com/screener/2-short-trend 并将它们传递给数据框。

由于自己知识有限,碰壁过不去了

我的代码是:

from requests_html import HTMLSession
session = HTMLSession()
response = session.get('https://chartink.com/screener/2-short-trend')
response.html.render()

for result in response.html.xpath('//*[@id="DataTables_Table_0"]/tbody/tr/td/a[1]'):
    print(f'{result.text}\n')

输出:

Mahindra & Mahindra Limited

M&M

P&F

Apollo Tyres Limited

APOLLOTYRE

P&F

....

我只需要股票代码:M&M、APOLLOTYRE 等,并传入数据框。

谁能指导一下。

有点快速修复,但您可以使用计数器,假设相关输出是每个公司的第二个结果。类似下面的内容:

from requests_html import HTMLSession
import pandas as pd

session = HTMLSession()
response = session.get('https://chartink.com/screener/2-short-trend')
response.html.render()

i = 1
symbols = []
for result in response.html.xpath('//*[@id="DataTables_Table_0"]/tbody/tr/td/a[1]'):
    print(f'{result.text}\n')
    if i == 2:
        symbols.append(result.text)
        i -= 2
    else:
        i += 1

df = pd.DataFrame({"Symbol": symbols})

我构建了 i 以触发将结果附加到符号列表中迭代符号的位置,然后使用输出创建数据帧。使用该代码给了我一个数据框,其中包含 link.

中的 5 个符号