使用Cookies模拟登陆
大致思路
1.手动登陆网站
2.获取cookies
3.携带cookies进行访问并抓取数据
import scrapy
class XXX(scrapy.Spider):
name = 'XX'
allowed_domains = ['XXXX']
start_urls = ['XXXX'] #直接使用start_urls是无法登陆一些页面的
def start_requests(self):
cookies = 'balbalbalalalala' #实际登陆之后复制到的网页cookies
cookies = {i.split('=')[0]:i.split('=')[1] for i in cookies.split(';')} #分割之后写成字典格式
yield scrapy.Request(
self.start_urls[0], #网址
cookies=cookies, #使用cookies
callback=self.parse
)
def parse(self, response):
#编写爬虫,抓取数据
pass
模拟POST,账号密码登陆
大致思路
1.你需要有目标网站的账户,也就是你需要有账号密码
2.找到POST下的Form Data的各个数据
3.模拟登陆,抓取数据
# -*- coding: utf-8 -*-
import scrapy
class XXXSpider(scrapy.Spider):
name = 'XX'
allowed_domains = ['XXXX.com']
start_urls = ['XXX']
def parse(self, response):
aa=response.xpath('XXX').extract_first() #获取form data所需数据
bb=response.xpath('XXX').extract_first()
cc=response.xpath('XXX').extract_first()
post_data = dict(aa=aa,bb=bb,cc=cc) #处理成字典
yield scrapy.FormResquest( #传递参数
'XXXXXX',
callback=self.XXX,
formdata=post_data
)
或者:
def parse(self,response):
yield scrapy.Request.From_response( #自动填补formdata
response,
formdata={'aa':'aa','bb':'bb'} #账号密码
callback=self.XXX
)
def XXX(self,response):
pass