【发布时间】:2021-11-15 01:40:29
【问题描述】:
我正在尝试每天从特定网站表中制作一个 csv:https://lunarcrush.com/exchanges
我已尝试在此处使用有关相关主题的每一条建议(例如,How to extract tables from websites in Python、Python Extract Table from URL to csv、extract a html table data to csv file 等等)
我以为我最初的问题是我没有表ID(例如在其他示例中,我只找到了(表)类名MuiTable-root。但经过更多挖掘后我发现每当我阅读 url 时,我得到的 HTML 代码是完全不同的,而不是我使用 Inspect(O) 点击浏览器时看到的。
我已经尝试了我在这里找到的几乎所有东西,所以我不确定它是否有助于引用每个单独的代码。作为一个例子,我只是引用以下内容,我试图让它发挥作用。这个想法很简单(找到表的tr 部分并获取th(标题)和td(数据),然后将它们提取到csv。
from lxml import etree
import urllib.request
web = urllib.request.urlopen("https://lunarcrush.com/exchanges")
s = web.read()
html = etree.HTML(s)
## Get all 'tr'
tr_nodes = html.xpath('//table[@class="MuiTableHead-root"]/tr')
## 'th' is inside first 'tr'
header = [i[0].text for i in tr_nodes[0].xpath("th")]
## Get text from rest all 'tr'
td_content = [[td.text for td in tr.xpath('td')] for tr in tr_nodes[1:]]
print(td_content)
有什么想法吗?很抱歉我的问题很长(也许很愚蠢),我刚开始使用 python,还有很多东西要学!
【问题讨论】:
-
看起来该网站正在使用 javascript。你需要像 Selenium 这样的工具。
-
在浏览器中进一步检查所有请求后,表中有返回json数据的urlapi2.lunarcrush.com/v2/…。但是您需要进一步查看,看看您是否可以提取
key参数,我预计它会改变 -
我去看看!谢谢!
-
查看浏览器开发者工具中的
Network标签。切换到网络选项卡并刷新页面,以便您可以看到所有信息 -
在这种情况下,它说
plain,这有点不寻常。但是,请注意 url 有key参数,我希望它会随着时间/会话而改变。所以 Selenium 可能是更好的探索方法
标签: python html python-3.x csv export-to-csv