Scrapy 爬虫模拟登陆的3种策略
1 Scrapy 爬虫模拟登陆策略
前面学习了爬虫的很多知识,都是分析 HTML、json 数据,有很多的网站为了反爬虫,除了需要高可用代理 IP 地址池外,还需要登录,登录的时候不仅仅需要输入账户名和密码,而且有可能验证码,下面就介绍 Scrapy 爬虫模拟登陆的几种策略。
1.1 策略一:直接POST请求登录
前面介绍的爬虫 scrapy 的基本请求流程是 start_request 方法遍历 start_urls 列表,然后 make_requests_from_url方法,里面执行 Request 方法,请求 start_urls 里面的地址,使用的是 GET 方法,由于直接使用用户名和密码可以登录,使用 POST 方法进行登录。
例子:人人网登录
登录地址:http://www.renren.com/PLogin.do
案例步骤:
第一步:创建项目。
在 dos下切换到目录
D:scrapy_project
新建一个新的爬虫项目:scrapy startproject renren
第二步:创建爬虫。
在 dos下切换到目录。
D:scrapy_projectenrenenrenspiders
用命令 scrapy genspider renren1 " renren.com" 创建爬虫。
第三步: 通过浏览器登录人人网,使用 fiddler 抓包抓取登录 post 请求的 data。
第四步:编写爬虫文件。
import scrapy
# 登录只需要提供 post 数据就可以登录的,就可以用这种方法,
# 下面示例:post 数据是账户密码
class Renren1Spider(scrapy.Spider):
name = "renren1"
allowed_domains = ["renren.com"]
def start_requests(self):
url = 'http://www.renren.com/PLogin.do'
# FormRequest 是 Scrapy 发送 POST 请求的方法
yield scrapy.FormRequest(
url = url,
formdata = {"email" : "13554799060