从数据中抓取表后拆分字符串



我正在从网页中抓取数据,想看看是否有一种简单的方法可以分离字符串。总长度为100种不同的另类硬币,包括名称、价格、流通量和数量。名称包含名称和sumbol。

例如:比特币BTC目标:将名称与符号分开,所以我只得到名称

价格带有美元符号例如:1.00美元目标:分离美元符号,所以我只得到的值

循环和容量供应具有值和符号

例如:1000000 BTC目标:分开,所以我只得到的值

我可以这样做,但问题是抓取是在一个循环中完成的,并存储在字典中。然后我在循环之外创建一个数据帧。

coin_name = coin_name.split('n')[0]
prices = prices.split('$')[1]
market_caps = market_caps.split('$')[1]
cir_sup = cir_sup.split()[0]
volume_sup = volume_sup.split()[0]

这是在循环内部:

results = [{"Alt coin name": coin.text, "Price": price.text,
"Market cap": cap.text, "Circulating supply":cir.text,
"Volume": vol.text} for coin, price, cap, cir, vol in zip(coin_name, prices, market_caps, cir_sup, volume_sup)]

数据由GET Restful API调用填充。

import requests
session = requests.Session()
URI = "https://web-api.coinmarketcap.com/v1/cryptocurrency/listings/latest"
params = dict(
start=101,
limit=100,
sort='market_cap',
sort_dir='desc',
convert='USD',
cryptocurrency_type='all',
aux='circulating_supply,max_supply,total_supply'
)
headers = {'User-Agent': ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/39.0.2171.95 Safari/537.36'),
'Content-Type': 'application/json'}
session.headers.update(headers)
# probably you can put this in a while-loop and call it every N-time
# as the data updates
r = session.get(URI, params=params)
data = r.json()
print(data)

使用BeautifulSoup

from bs4 import BeautifulSoup
import requests
URL = 'https://coinmarketcap.com/1/'
r = requests.get(URL)
soup = BeautifulSoup(r.text, 'lxml')
table = soup.find('table')
#columns = ' '.join([item.get_text(',') for item in table.find('thead').find_all('tr')]).split(',')
rows = [i.split(',') for i in [item.get_text(',') for item in table.find('tbody').find_all('tr')]]
print(rows)

最新更新