2017-01-05 7 views
0

私はpython Scrapyを使用してウェブサイトを掻き集めようとしています。 xpath式は、スパイラルシェルから実行したときに必要な出力を与えますが、スパイダーから実行したときは出力しません。エラーは返されず、DEBUG Crawled(200)が返されます。ここに私のコードです: -Python Scrapyが望ましい出力を出さない

import scrapy 
import logging 
from scrapy.linkextractors import LinkExtractor 
from scrapy.spiders import CrawlSpider, Rule 
class amazon(scrapy.Spider): 
name = "automate" 
start_urls = ['http://www.geeksforgeeks.org/'] 
def parse(self, response): 
    for href in response.xpath('//div/a[contains(@class,"tag-link-1942 tag-link-position-3")]/@href'): 
     url = href.extract()  
     yield scrapy.Request(url, callback=self.parse_item2) 
def parse_item2(self, response): 
for url in response.xpath('//div/article/header/h2/a/@href'): 
     yield 
     { 
      'link': url.extract(), 
     } 
    next_page_url = response.xpath('//div[contains(@class, "wp-pagenavi")]/a[contains(@class, "page larger")]/@href') 
    if next_page_url is not None: 
     yield 
     { 
      scrapy.Request(next_page_url.extract_first(), callback=self.parse_item2) 
     } 

答えて

0

あなたのスクリプトのインデントは多少混乱します。私が正しく解釈したら、出力が足りないことが分かります。 次のコードは私に役立ち、記事のタイトルを表示します。おそらくあなたに役立つかもしれません:

import scrapy 
import logging 
from scrapy.linkextractors import LinkExtractor 
from scrapy.spiders import CrawlSpider, Rule 

class amazon(scrapy.Spider): 
    name = "automate" 
    start_urls = ['http://www.geeksforgeeks.org/'] 

    def parse(self, response): 
    for href in response.xpath('//div/a[contains(@class,"tag-link-1942 tag-link-position-3")]/@href'): 
     url = href.extract()  
     yield scrapy.Request(url, callback=self.parse_item2) 

    def parse_item2(self, response): 
     for url in response.xpath('//div/article/header/h2/a/@href'): 
      next_page_url = response.xpath('//div[contains(@class, "wp-pagenavi")]/a[contains(@class, "page larger")]/@href') 
      if len(next_page_url): 
       print(response.xpath('string(//h2[@class="entry-title"]/a)').extract()) 
       yield scrapy.Request(next_page_url.extract_first(), callback=self.parse_item2) 
関連する問題