Я хочу удалить http://www.3andena.com/, этот веб-сайт сначала откроется на арабском языке). , и сохраняет языковые настройки в файлах cookie. Если вы попытались получить доступ к языковой версии напрямую через URL-адрес ( http://www.3andena.com/home.php?sl=en), проблема и ошибка сервера.
Итак, я хочу установить значение файла cookie «store_language» на «en», а затем начать очищать веб-сайт, используя эти значения файла cookie.
Я использую CrawlSpider с парой правил.
вот код
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):
hxs = HtmlXPathSelector(response)
items = []
item = Product()
'''
some parsing
'''
items.append(item)
return items
SPIDER = AndenaSpider()
Вот лог:
2012-05-30 19:27:13+0000 [andena] DEBUG: Redirecting (301) to from
2012-05-30 19:27:14+0000 [andena] DEBUG: Redirecting (302) to from
2012-05-30 19:27:14+0000 [andena] DEBUG: Crawled (200) (referer: None)
2012-05-30 19:27:15+0000 [andena] DEBUG: Crawled (200) (referer: http://www.3andena.com/Kettles/?objects_per_page=10)