繁体   English   中英

如何使用 BeautifulSoup 来刮这张桌子?

[英]How can I use BeautifulSoup to scrape this table?

我是 Python 和学习数据分析的新手。 我正在尝试从此 web 页面中抓取数据: https://bitinfocharts.com/dogecoin/address/DN5Hp2kCkvCsdwr5SPmwHpiJgjKnC5wcT7

我可以使用简单的网站抓取数据,但我认为由于 BitInfoCharts 有表格,它可能是比我正在关注的教程更复杂的 HTML 设置。

我的目标是从包含块、时间、金额、余额等的表中抓取数据,并将其保存在 csv 文件中。 我之前尝试过使用 pandas 但发现很难从 HTML 中得到我想要的数据。

为此,我认为我需要做的是从 "class="table abtb tablesorter tablesorter-default" 获取标题/表信息,然后从包含 "class= “trb”。 class=trb 因页面而异(例如,一个人可能有 7 笔交易,而另一个人可能有 40 笔)。 我不确定,因为这对我来说是新领域。

我真的很感激任何帮助。

import requests
from bs4 import BeautifulSoup as bs 
url = 'https://bitinfocharts.com/dogecoin/address/DN5Hp2kCkvCsdwr5SPmwHpiJgjKnC5wcT7'
headers = {"User-Agent":"Mozilla/5.0"}

r = requests.get(url, headers=headers)

soup = bs(r.content)

table = soup.find_all("table_maina")
print(table)

只有一个名为 table_maina 的表格元素,因此您应该调用 find() 与 find_all()。

尝试:

table = soup.find("table", id='table_maina')
for tr in table.find_all('tr'):
  print(tr.text)

Output:

BlockTimeAmountBalanceBalance, USD @ PriceProfit
4066317 2022-01-17 15:41:22 UTC2022-01-17 15:41:22 UTC-33,000,000 DOGE (5,524,731.65 USD)220,000,005.04121223 DOGE$36,831,545 @ $0.167$-28,974,248
4063353 2022-01-15 11:04:46 UTC2022-01-15 11:04:46 UTC+4,000,000 DOGE (759,634.87 USD)253,000,005.04121223 DOGE$48,046,907 @ $0.19$-23,283,618

如果您决定手动执行此操作,则执行相同的操作:

import csv
import requests
from bs4 import BeautifulSoup as bs 
url = 'https://bitinfocharts.com/dogecoin/address/DN5Hp2kCkvCsdwr5SPmwHpiJgjKnC5wcT7'
headers = {"User-Agent":"Mozilla/5.0"}

r = requests.get(url, headers=headers)

soup = bs(r.content,'lxml')
table = soup.find(id="table_maina")
headers = []
datarows = []
for row in table.find_all('tr'):
    heads = row.find_all('th')
    if heads:
        headers = [th.text for th in heads]
    else:
        datarows.append( [td.text for td in row.find_all('td')] )
        
fcsv = csv.writer( open('x.csv','w',newline=''))
fcsv.writerow(headers)
fcsv.writerows(datarows)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM