【发布时间】:2015-12-13 21:46:01
【问题描述】:
我正在尝试使用 Python 的 Scrapy 框架创建这个 Reddit scraper。
我使用 CrawSpider 爬过 Reddit 及其子版块。但是,当我遇到包含成人内容的网页时,该网站会要求提供 cookie over18=1。
所以,我一直在尝试在蜘蛛发出的每个请求中发送一个 cookie,但是,它没有成功。
这是我的蜘蛛代码。如您所见,我尝试使用start_requests() 方法为每个蜘蛛请求添加一个cookie。
这里有人能告诉我怎么做吗?还是我做错了什么?
from scrapy import Spider
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from reddit.items import RedditItem
from scrapy.http import Request, FormRequest
class MySpider(CrawlSpider):
name = 'redditscraper'
allowed_domains = ['reddit.com', 'imgur.com']
start_urls = ['https://www.reddit.com/r/nsfw']
rules = (
Rule(LinkExtractor(
allow=['/r/nsfw/\?count=\d*&after=\w*']),
callback='parse_item',
follow=True),
)
def start_requests(self):
for i,url in enumerate(self.start_urls):
print(url)
yield Request(url,cookies={'over18':'1'},callback=self.parse_item)
def parse_item(self, response):
titleList = response.css('a.title')
for title in titleList:
item = RedditItem()
item['url'] = title.xpath('@href').extract()
item['title'] = title.xpath('text()').extract()
yield item
【问题讨论】:
-
cookie在
request.cookies中吗? -
@esfy 不,我猜。我在
Request(url,cookies={'over18':'1'},callback=self.parse_item)中指定了cookie
标签: python cookies web-scraping scrapy