无法使用 Beautifulsoup 从网站读取表格

Posted

技术标签:

【中文标题】无法使用 Beautifulsoup 从网站读取表格【英文标题】:Unable to read table from website using Beautifulsoup 【发布时间】:2018-08-27 06:08:21 【问题描述】:

我正在尝试使用以下代码读取网站的内容。

import requests
from bs4 import BeautifulSoup

url  = "https://chartink.com/screener/test-121377" 
r    = requests.get(url)
data = r.text
soup = BeautifulSoup(data,"html.parser")

print(soup)

结果,我无法看到当我在浏览器中手动执行“检查”元素时可以看到的表格。

使用硒可能是一种解决方案。但如果可能的话,我正在寻找其他一些替代解决方案。

知道如何从 HTML 中的底层脚本读取数据吗?

【问题讨论】:

【参考方案1】:

在这种情况下,您应该尝试新发布的requests_html 库,它能够处理动态生成的项目。如果您遵守我刚才所说的话,您的脚本应该是这样的:

import requests_html

session = requests_html.HTMLSession()
r = session.get('https://chartink.com/screener/test-121377')
r.html.render(sleep=5)
items = r.html.find("table#DataTables_Table_0",first=True)
for item in items.find("tr"):
    data = [td.text for td in item.find("th,td")]
    print(data)

输出:

['Sr.', 'Stock Name', 'Symbol', 'Links', '% Chg', 'Price', 'Volume']
['1', 'Axis Bank Limited', 'AXISBANK', 'P&F | F.A', '-1.33%', '522.6', '12,146,623']
['2', 'Reliance Industries Limited', 'RELIANCE', 'P&F | F.A', '-1.29%', '900.05', '14,087,564']
['3', 'Tata Steel Limited', 'TATASTEEL', 'P&F | F.A', '-1.89%', '600.2', '11,739,582']

【讨论】:

太棒了。非常感谢您的帮助,非常感谢! 如何在 c# 中做到这一点? 它不起作用。我收到以下错误:RuntimeError:无法在现有事件循环中使用 HTMLSession。请改用 AsyncHTMLSession。 我刚刚测试了它,发现它运行良好。但是,如果您遇到任何问题或有任何疑问,请尝试创建一个描述您的要求和代码尝试的帖子。谢谢.. @SIM 当然可以。我在这里创建了一个:***.com/questions/64319691/…

以上是关于无法使用 Beautifulsoup 从网站读取表格的主要内容,如果未能解决你的问题,请参考以下文章

BeautifulSoup 从评论 html 中提取文本 [重复]

无法从 beautifulsoup 中正确打印出组合表

我应该使用 Screen Scrapers 还是 API 从网站读取数据

为啥 BeautifulSoup 无法正确读取/解析此 RSS (XML) 文档?

BeautifulSoup 无法解析内容,因为页面加载速度太慢

BeautifulSoup 不会从网页中提取所有表单