KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I want to scrap http://www.3andena.com/ , this web site starts first in Arabic, and it stores the language settings in cookies. If you tried to access the language version directly through URL ( http://www.3andena.com/home.php?sl=en ), it makes a problem and return server error. So, I want to set the cookie value "store_language" to "en", then start scrap the website using this cookie values. I'm using CrawlSpider with a couple of Rules. here's the code from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from scrapy import log from bkam.items import Product from scrapy.http import Request import re class AndenaSpider(CrawlSpider): name = "andena" domain_name = "3andena.com" start_urls = ["http://www.3andena.com/Kettles/?objects_per_page=10"] product_urls = [] rules = ( # The following rule is for pagination Rule(SgmlLinkExtractor(allow=(r'\?page=\d+$'),), follow=True), # The following rule is for produt details Rule(SgmlLinkExtractor(restrict_xpaths=('//div[contains(@class, "products-dialog")]//table//tr[contains(@class, "product-name-row")]/td'), unique=True), callback='parse_product', follow=True), ) def start_requests(self): yield Request('http://3andena.com/home.php?sl=en', cookies={'store_language':'en'}) for url in self.start_urls: yield Request(url, callback=self.parse_category) def parse_category(self, response): hxs = HtmlXPathSelector(response) self.product_urls.extend(hxs.select('//td[contains(@class, "product-cell")]/a/@href').extract()) for product in self.product_urls: yield Request(product, callback=self.parse_product) def parse_product(self, response):
Tags (comma-separated)
Save Edits
Cancel