2016-06-29 6 views
0

私はスマートな方法がScrapyルールを使用している、私はこれを試していますが、リンクをたどらないと思いPythonのScrapyでウェブサイトをこすりといくつかのリンクをたどるためにScrapyのルールを使用するには?

を「カタログ」を含むすべてのリンクをフォローしたいです

class Houra(CrawlSpider): 
    reload(sys) 
    pageNumber = 0 
    name = 'houra' 
    allowed_domains = ["houra.fr"] 
    driver = webdriver.Chrome() 
    rules = [ 
     Rule(LinkExtractor(allow=r'catalogue/'), callback='parse_page', follow=True), 
    ] 
    def __init__(self, idcrawl=None, iddrive=None, idrobot=None, proxy=None, *args, **kwargs): 
     super(Houra, self).__init__(*args, **kwargs) 
def start_requests(self): 
    yield Request("http://www.houra.fr", callback=self.parse_page1) 
def parse_page1(self, response): 
    self.driver.get(response.url) 
    inputElement = self.driver.find_element_by_css_selector("#CPProspect") 
    inputElement.send_keys("75001") 
    inputElement.submit() 

def parse_page(self, response): 

    body = response.css('body').extract_first() 
    f = io.open('./houra/page%s' % str(self.pageNumber), 'w+', encoding='utf-8') 
    f.write(body) 
    f.close() 
    self.pageNumber = self.pageNumber + 1 

答えて

2

restrict_xpathsは、リンクを探す領域を定義します。しかし、あなたは、リンクhref値をチェックことになる代わりにallowを使用する必要があります。

Rule(LinkExtractor(allow=r'catalogue/'), callback='parse_page', follow=True) 
+0

のいずれか、多分私は、あなたの答えを正しく – parik

+0

@parikをundrestandなかった私はあなたのコードを使用しますが、それは続くdoes'nt、それができます別の問題。 'href'値の中に' catalog/'部分文字列を持つリンクが実際にあることを確認してください。 – alecxe

+0

はい、私はあなたのスパイダーの完全なコードを投稿することができますか? – parik

関連する問題