1
私は掻きするウェブページを持っています。このページには、<table>
のリンクのリストがあります。ルールセクションを使用して、Scrapyにリンクを調べ、リンクがターゲットとするページのデータを取得するように依頼しています。私のコードは以下の通りです:リンクのリストに従って、虐待されているページからデータを取得するにはどうすればよいですか?
class ToScrapeSpiderXPath(scrapy.Spider):
name = 'coinmarketcap'
start_urls = [
'https://coinmarketcap.com/currencies/views/all/'
]
rules = (
Rule(LinkExtractor(allow=(), restrict_xpaths=('//tr/td[2]/a/@href',)), callback="parse", follow= True),
)
def parse(self, response):
print("TEST TEST TEST")
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がリンクをたどっていないことです。そのリンクからデータを抽出しようとすると、そのリンクを取得するだけです。私は何が欠けていますか?
更新日#1: クロールとスクレイプはなぜ違いますか?
2017-03-28 23:10:33 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://coinmarketcap.com/currencies/pivx/> (referer: None)
2017-03-28 23:10:33 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://coinmarketcap.com/currencies/zcash/> (referer: None)
2017-03-28 23:10:33 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://coinmarketcap.com/currencies/bitcoin/> (referer: None)
2017-03-28 23:10:33 [scrapy.core.scraper] DEBUG: Scraped from <200 https://coinmarketcap.com/currencies/nem/>
ありがとうございました!これは完璧に動作し始めました.... – arcee123
残念ですが、アップデート#1を見ると、いくつかのページがクロールされ、他のページが掻き分けられます。なぜか教えてくれますか? – arcee123
私はそれが行くすべてのページを掻き集めることを探しています – arcee123