Моя цель - создать скребок, который будет извлекать данные из таблицы этого сайта .
Изначально я следовал учебнику по Scrapy , в котором мне удалось извлечь данные с тестовой площадки. Когда я пытаюсь скопировать его для Bitinfocharts, первая проблема заключается в том, что мне нужно использовать xpath, который подробно не рассматривается в учебнике (они используют только css). Мне удалось очистить определенные данные, которые я хочу, через оболочку.
- Моя текущая проблема - понимание, как я могу вычеркнуть их все из своего кода и в то же время записать результаты в файл .csv / .json?
Я, наверное, упускаю что-то совершенно очевидное. Если вы посмотрите на мой код и дадите мне знать, что я делаю неправильно, я был бы очень признателен.
Спасибо!
Первая попытка:
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)