私は Scrapy と Python を学んでいて、空のプロジェクトから始めました。私は Scrapy LxmlLinkExtractor を使用してリンクを解析していますが、HTML 以外のリンク/ページ (PDfs やその他のドキュメントなど) に遭遇すると、スパイダーは常にスタックします。
質問: これらの URL のみを保存したい場合 (ドキュメントのコンテンツは今のところ必要ありません...)
ドキュメントのあるページの例: http://afcorfmc.org/2009.html
これが私のスパイダーコードです:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.lxmlhtml import LxmlLinkExtractor
from super.items import SuperItem
from scrapy.selector import Selector
class mySuper(CrawlSpider):
name="super"
#on autorise seulement le crawl du site indiqué dans allowed_domains
allowed_domains = ['afcorfmc.org']
#démarrage sur la page d'accueil du site
start_urls = ['http://afcorfmc.org']
rules = (Rule (LxmlLinkExtractor(allow=(),deny=(),restrict_xpaths=()), callback="parse_o", follow= True),)
def parse_o(self,response):
#récupération des datas récoltées (contenu de la page)
sel = Selector(response)
#on prépare item, on va le remplir (souvenez-vous, dans items.py)
item = SuperItem()
#on stocke l'url de la page dans le tableau item
item['url'] = response.url
#on récupère le titre de la page ( titre ) grâce à un chemin xpath
#item['titre'] = sel.xpath('//title/text()').extract()
# on fait passer item à la suite du processus
yield item