Scrapy 爬虫框架-自动登录实现

创建新的spider步骤

1、创建项目:scrapy startproject renren
2、进入目录创建新爬虫:scrapy genspider renren_spider renren.com
3、settings.py配置爬虫机器人规则ROBOTSTXT_OBEY为False
4、settings.py配置协议头信息DEFAULT_REQUEST_HEADERS中添加User-Agent信息
5、项目下创建启动页start_renren.py

from scrapy.cmdline import execute
execute("scrapy crawl renren_spider".split(' '))

登录验证的API推荐

  1. 滑动验证码破解平台:http://api.4xx3.cn/
  2. 云打码:http://www.yundama.com/price.html
  3. 超级鹰:http://www.chaojiying.com/cases.html

如何发送登录表单

由于是表单,必须发送一个Post请求,因此创建FromRequest请求,并且设置登录成功后要执行的方法

class JsSpider(scrapy.Spider):
    name = 'js'
    allowed_domains = ['renren.com']
    # 起始地址为登录页面, 登录成功后在进行爬取操作
    start_urls = ['http://www.renren.com/SysHome.do']

    def parse(self, response):
        # 1: 返回的是登录页面的数据
        # 2: 创建表单,并且填写正确的账户的密码
        loginForm = {
            'email': '970138074@qq.com',
            'password': 'pythonspider',
        }
        return scrapy.FormRequest(url="http://www.renren.com/PLogin.do",formdata=loginForm,callback=self.after_login)

    def after_login(self,reponse):
        with open('books.html', 'w+',encoding="UTF-8") as f:
            f.write(reponse.text)

如果登录成功则会执行after_login方法,此方法会把登录成功之后的页面下载到本地,下载时设置的编码取决于目标网页的编码

发表评论

电子邮件地址不会被公开。 必填项已用*标注