爬虫2.3-scrapy框架-postshell验证码

Posted bitterzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫2.3-scrapy框架-postshell验证码相关的知识,希望对你有一定的参考价值。

目录

scrapy框架-post请求和shell

1. post请求

scrapy框架在开始时,会直接调用start_requests(self) 函数,所以需要重写start_requests方法,并且不调用start_urls里面的url,之后再使用回调函数进入真正的数据解析函数

class RenrenSpider(scrapy.Spider):
    name = ‘renren‘
    allowed_domains = [‘renren.com‘]
    start_urls = [‘http://renren.com/‘]

    def start_requests(self):
        url = "http://www.renren.com/PLogin.do"
        data = { ‘email‘: ‘[email protected]‘, ‘password‘:‘pythonspider‘, }
        requese = scrapy.FormRequest(url, formdata=data, callback=self.parse_page)  
        # post方法请求页面,最好使用FormRequest函数
        yield requese

    def parse_page(self, response):
        with open(‘renren.html‘, ‘w‘, encoding=‘utf-8‘) as fp:
            fp.write(response.text)
        # 将页面写成html文件,用浏览器打开即可证明post请求成功。

2. scrapy shell

当我们想测试xpath语法得到的结果时,不停启动整个项目实际上是很笨重的,所以scrapy shell可以帮助我们测试数据解析语句效果

cmd
>> cd [projectname]
>> scrapy shell url
>> 返回一堆可以使用的对象,这里没有深入研究,只使用了response
>> title = response.xpath(r"//h[@class=‘ph‘]/text()").get()
>> title
>> 数据。。
>> contents = response.xpath(r"//td[@id=‘article_content‘]//text()").getall()  # 获取td标签下所有的文本,所以使用getall() 获取,返回一个列表
>> content = ‘‘.join(contents).strip()  # 将contens列表中的所有本文去除换行和空格送入
>> content 
>> 显示一堆数据

3. 验证码识别

思路:

找到登陆的url,username,password表单格式,以及验证码url,然后将验证码下载到本地,此时有两种识别方法

1 将验证码展示在屏幕上,人工识别,手动输入

2 阿里云验证码识别服务,将图片下载后按照阿里云验证码识别的要求将数据发送给它,等待结果,处理json数据,提取验证码。

以上是关于爬虫2.3-scrapy框架-postshell验证码的主要内容,如果未能解决你的问题,请参考以下文章

Python3网络爬虫实战-43极验滑动验证码的识别

Python3网络爬虫实战-44点触点选验证码的识别

爬虫初试

爬虫辅助网站

C#网络爬虫

验证码逆向专栏极验三代四代点选类验证码逆向分析