Alpha63
22.04.2015, 18:16
Hi,
ich möchte mit dem framework scrapy gerne eine seite mit folge seiten crawln.
Leider funktioniert es nicht.
Kann mir jemand sagen warum?
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
ich möchte mit dem framework scrapy gerne eine seite mit folge seiten crawln.
Leider funktioniert es nicht.
Kann mir jemand sagen warum?
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