在整个框架运作前,需要一个启动条件,这个启动条件就是start_urls,首先从start_urls的网页发起requests请求,才会有后面的调度器、下载器、爬虫、管道的运转。所以,这里我们可以针对start_urls进行网络请求的start_requests方法进行重写,把我们的cookie给携带进去
注意:必须要使用yield返回,不然没办法运行
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
# allowed_domains = ['example.com']
start_urls = ['https://www.baidu.com']
# 重写start_request方法,scrapy从这里开始
def start_requests(self):
# 添加cookie的第一种方法,直接添加
cookie = " "
cookie_dic = {}
for i in cookie.split(";"):
cookie_dic[i.split("=")[0]] = i.split("=")[1]
# 添加cookie的第二种方法:添加头部
headers = {
"cookie": "cookie_info",
# 使用headers传入cookie时,要在settings中加入COOKIES_ENABLE = True
}
for url in self.start_urls:
yield scrapy.Request(url=url, callback=self.parse, headers=headers) # 添加cookies
def parse(self, response):
print(response.text)