の19を引っ張る:すべての行のtd[2]
でhttps://coinmarketcap.com/currencies/views/all/Scrapyクローラは、私はこのページをこすりしようとしている680+のURL
はリンクです。私はそのtd
の各リンクに行き、リンクが表すページをスクレープするようにスクラピーを尋ねようとしています。以下は私のコードです:
注:別の人が、私はテーブルを越えてもカントー600以上のリンク/ページをここまで
class ToScrapeSpiderXPath(CrawlSpider):
name = 'coinmarketcap'
start_urls = [
'https://coinmarketcap.com/currencies/views/all/'
]
rules = (
Rule(LinkExtractor(restrict_xpaths=('//td[2]/a',)), callback="parse", follow=True),
)
def parse(self, response):
BTC = BTCItem()
BTC['source'] = str(response.request.url).split("/")[2]
BTC['asset'] = str(response.request.url).split("/")[4],
BTC['asset_price'] = response.xpath('//*[@id="quote_price"]/text()').extract(),
BTC['asset_price_change'] = response.xpath(
'/html/body/div[2]/div/div[1]/div[3]/div[2]/span[2]/text()').extract(),
BTC['BTC_price'] = response.xpath('/html/body/div[2]/div/div[1]/div[3]/div[2]/small[1]/text()').extract(),
BTC['Prct_change'] = response.xpath('/html/body/div[2]/div/div[1]/div[3]/div[2]/small[2]/text()').extract()
yield (BTC)
を得るうえで最高だった私はscrapy crawl coinmarketcap
を実行したとき、私は唯一の19を得ます記録。これは、600以上のこのリストから19ページだけを意味します。私は擦り傷を止める問題を見るのに失敗している。どんな助けでも大歓迎です。
おかげ
あなたは、特に統計は、どのようにスケジュールされた要求の数を見ることができます終わり、でのdict、ログをクロール共有してください。多くのものがおそらくフィルタリングされています。 –
コールバックを 'parse()'から 'parse_item()'に変更して(ルール内のコールバック名を調整すると)どうでしょうか? – alecxe