Ich versuche, einfache Crawler mit Scrapy
(scrapy.org) zu erstellen. Gemäß Beispiel item.php
ist erlaubt. Wie kann ich eine Regel schreiben, die URL erlaubt, die immer mit http://example.com/category/
beginnen, aber in GET
Parameter page
sollte dort mit irgendeiner Zahl der Stelle mit anderen Parametern sein. Die Reihenfolge dieser Parameter ist zufällig. Bitte helfen Wie kann ich eine solche Regel schreiben?Wie LinkExtractor Regel zu erstellen, die auf href in Scrapy
Nur wenige gültige Werte sind:
- http://example.com/category/?page=1&sort=a-z&cache=1
- http://example.com/category/?page=1&sort=a-z#
- http://example.com/category/?sort=a-z&page=1
Es folgt der Code:
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'example.com'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com/category/']
rules = (
Rule(LinkExtractor(allow=('item\.php',)), callback='parse_item'),
)
def parse_item(self, response):
item = scrapy.Item()
item['id'] = response.xpath('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
item['name'] = response.xpath('//td[@id="item_name"]/text()').extract()
item['description'] = response.xpath('//td[@id="item_description"]/text()').extract()
return item