我的目标是建立一个从this site的表中提取数据的抓取器。
最初,我遵循tutorial of Scrapy,在这里我成功地从测试站点中提取了数据。当我尝试为Bitinfocharts复制它时,第一个问题是我需要使用xpath,本教程没有详细介绍(仅使用css)。我已经能够通过外壳抓取所需的特定数据。
我可能缺少一些显而易见的东西。如果您可以看一下我的代码并让我知道我做错了,我将深表感谢。
谢谢!
第一次尝试:
import scrapy
class RichlistTestItem(scrapy.Item):
# overview details
wallet = scrapy.Field()
balance = scrapy.Field()
percentage_of_coins = scrapy.Field()
class QuotesSpider(scrapy.Spider):
name = "quotes"
allowed_domain = ['https://bitinfocharts.com/']
start_urls = [
'https://bitinfocharts.com/top-100-richest-vertcoin-addresses.html'
]
def parse(self, response):
for sel in response.xpath("//*[@id='tblOne']/tbody/tr/"):
scrapy.Item in RichlistTestItem()
scrapy.Item['wallet'] = sel.xpath('td[2]/a/text()').extract()[0]
scrapy.Item['balance'] = sel.xpath('td[3]/a/text').extract()[0]
scrapy.Item['percentage_of_coins'] = sel.xpath('/td[4]/a/text').extract()[0]
yield('wallet', 'balance', 'percentage_of_coins')
第二次尝试:(可能接近50次尝试)
import scrapy
class RichlistTestItem(scrapy.Item):
# overview details
wallet = scrapy.Field()
balance = scrapy.Field()
percentage_of_coins = scrapy.Field()
class QuotesSpider(scrapy.Spider):
name = "quotes"
allowed_domain = ['https://bitinfocharts.com/']
start_urls = [
'https://bitinfocharts.com/top-100-richest-vertcoin-addresses.html'
]
def parse(self, response):
for sel in response.xpath("//*[@id='tblOne']/tbody/tr/"):
wallet = sel.xpath('td[2]/a/text()').extract()
balance = sel.xpath('td[3]/a/text').extract()
percentage_of_coins = sel.xpath('/td[4]/a/text').extract()
print(wallet, balance, percentage_of_coins)
答案 0 :(得分:0)
我已修复您的第二个试用版,尤其是下面的代码段
print (df1.head())
Date count
66 02-05-2014 54
594 13-05-2014 56
294 07-02-2014 57
877 19-04-2013 58
162 04-05-2014 59
df1.to_csv('file.csv', index=False)
我发现的问题是
每个td都有一个data-val属性。刮除这些内容可能比从td内部获取价值要容易得多。