コードソース:http://mherman.org/blog/2012/11/08/recursively-scraping-web-pages-with-scrapy/#rules 私はpythonとscrapyに新しいです。私は再帰的な蜘蛛を探して、これを見つけました。 Scrapyはルールとのすべてのリンクをクロールしますか?
は、私はいくつかの質問を持っている:次のしくみを教えてください。ページからhrefリンクを取得してリクエストキューに追加するだけですか?
ウェブページのうち、どの部分が不正にクロールされますか?
以下のコードは、すべてのリンクをウェブページから削り取りますか?
がhttp://downloads.trendnet.com/
このウェブサイトから、私はすべてのファイルをクロールし、ダウンロードしたいとしましょう、私はおそらくそれを行うだろう方法は、このウェブサイト上のすべてのリンクをこすりとURLのコンテンツヘッダをチェックし、それがファイルであればダウンロードすることです。これは実現可能ですか?
申し訳ありませんが、それは悪い質問....
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from craigslist_sample.items import CraigslistSampleItem
class MySpider(CrawlSpider):
name = "craigs"
allowed_domains = ["sfbay.craigslist.org"]
start_urls = ["http://sfbay.craigslist.org/search/npo"]
rules = (
Rule(SgmlLinkExtractor(allow=(), restrict_xpaths=('//a[@class="button next"]',)), callback="parse_items", follow= True),
)
def parse_items(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.xpath('//span[@class="pl"]')
items = []
for titles in titles:
item = CraigslistSampleItem()
item["title"] = titles.xpath("a/text()").extract()
item["link"] = titles.xpath("a/@href").extract()
items.append(item)
return(items)