Scrapyのドキュメントでthis spider exampleを見てください。説明は次のとおりです治療SgmlLinkExtractorが許可されているリンクを無視しています
このスパイダーは、example.comのホームページをクロールし、カテゴリリンクを収集し、後者をparse_itemメソッドで解析します。各アイテムのレスポンスでは、XPathを使用してHTMLからいくつかのデータが抽出され、アイテムがそのアイテムで満たされます。
同じスパイダーを正確にコピーし、「example.com」を別の初期URLに置き換えました。行うことになっているよう
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from stb.items import StbItem
class StbSpider(CrawlSpider):
domain_name = "stb"
start_urls = ['http://www.stblaw.com/bios/MAlpuche.htm']
rules = (Rule(SgmlLinkExtractor(allow=(r'/bios/.\w+\.htm',)), callback='parse', follow=True),)
def parse(self, response):
hxs = HtmlXPathSelector(response)
item = StbItem()
item['JD'] = hxs.select('//td[@class="bodycopysmall"]').re('\d\d\d\d\sJ.D.')
return item
SPIDER = StbSpider()
しかし、私のクモ「STB」を「/ BIOS /」からのリンクを収集することはありません。最初のURLを実行し、item['JD']
をスクラップしてファイルに書き込み、終了します。
なぜSgmlLinkExtractor
は無視されますか? Rule
は、Rule
行内で構文エラーを検出するため、読み取られます。
これはバグですか?私のコードに何か間違っていますか?すべての実行時に表示される未処理のエラーを除いてエラーはありません。
私がここで間違っていることを知ってうれしいです。すべての手がかりをありがとう。 SgmlLinkExtractor
さんは何を誤解していますか?
「すべての実行時に表示される束のエラーを処理する以外にエラーはありません」と表示されたら、私は頭を傷つけなければなりません。 –
申し訳ありませんが、サポート終了の警告が表示されます。私が見ていたエラーは、Pablo Hoffmanがここで述べたと同時にtelnetとシェルを開いていることに起因していました。http://stackoverflow.com/questions/1767553/twisted-errors-in-scrapy-spiderシェル、私はもうそれらを見ません。許可されたリンクが擦られない理由を示す手がかりは? – Zeynel