Hi,
ich möchte mit dem framework scrapy gerne eine seite mit folge seiten crawln.
Leider funktioniert es nicht.
Kann mir jemand sagen warum?
HTML-Code:
import scrapy
from scrapy.contrib.linkextractors import LinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.spider import Spider
from scrapy import Selector
from scrapy.selector import HtmlXPathSelector
from craigslist_sample.items import CraigslistSampleItem
import urlparse
from scrapy.http.request import Request
class MySpider(Spider):
name = "craig"
allowed_domains = ["example.de"]
start_urls = ["www.example.com"]
rules = (Rule (SgmlLinkExtractor(allow=("Seite-\d00", ),restrict_xpaths=('//a',))
, callback="parse", follow= True),
)
def parse(self, response):
hxs = Selector(response)
ne = HtmlXPathSelector(response)
next_page = ne.select("//td[@class='pagerNextlink']/a/@href").extract()
titles = hxs.xpath('//table[@class="list"]/tr')
section = hxs.select('//div[@id="productListFilterContainer"]')
items = []
for title in titles:
item = CraigslistSampleItem()
item ["section"] = section.select('div/h2/text()').extract()
item ["preis"] = title.xpath('td/div[@style="margin-bottom:5px;"]/text()').extract()
if not item ["preis"]:
item ["preis"] = title.xpath('td/div[@style="margin-bottom:5px;color:#F00;"]/text()').extract()
item ["title"] = title.xpath("td/a/text()").extract()
item ["link"] = title.xpath('td/a/@href').extract()
if not item ["preis"]:
pass
else:
items.append(item)
return items
Leider funktioniert das nicht.
es gibt auf der seite einen next button der example.de/Seite-2 aufruft.
die soll er halt auch crawln