突破反爬虫策略
1.什么是爬虫和反爬虫 爬虫是使用任何技术手段批量获取网站信息的一种方式,反爬虫是使用任何技术手段阻止别人批量获取自己网站信息的一种方式; 2.User-Agent介绍 User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标
Crawl Spider 模板的使用
1.Spider模板 scrapy默认创建的spider模板就是basic模板,创建spider文件的命令是:scrapy genspider dribbble dribbble.com,查看spider模板的命令是:scrapy genspider --list; 在项目中明确指明使用crawl生成模板生成spider的命令是:scrapy genspider -t crawl csdn w
引入ItemLoader和Item的预处理函数
1.引入ItemLoader 在项目的item.py文件中创建一个自定义的loader类,然后让这个自定义类继承ItemLoader类; class XkdItemLoader(ItemLoader): default_output_processor = TakeFirst() ItemLoader类的语法:scrapy.loader.ItemLoader([ item,se
使用异步的twisted框架写入数据
1.twisted框架介绍 Twisted是用Python实现的基于事件驱动的网络引擎框架; Twisted支持许多常见的传输及应用层协议,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像Python一样,Twisted也具有“内置池”(batteries-included)的特点。Twisted对于其支持的所有协议都带有客户端和服务器实现,同时附带有基于
item 数据model保存到数据库中
1.如何将item 数据model保存到数据库中 首先在本地创建好MySQL数据库,再数据库中创建好数据表 # 创建数据库 create database item_database; set global validate_password_length = 1; set global validate_password_policy = 0; grant all on item_d
图片路径存储且item的json化
1.item_completed()方法 语法:item_completed(results, items, info); 当一个单独项目中的所有图片请求完成时(不管下载成功或者失败),ImagesPipeline.item_completed() 方法将被调用。item_completed()方法必须返回将发送到后续item pipeline阶段的输出,因此必须返回或删除item(默认情况下
图片下载
今天要学习的是图片下载,Scrapy用ImagesPipeline类提供一种方便的方式来下载和存储图片; (1)首先还是使用dribbble.com这个网站来爬取数据,先在项目中的dribbble.py文件中根据响应来获取图片的src属性,这样我们就可以获取到了图片的路径了,这个我们之前已经学过了; (2)然后在items.py文件中根据自己的需求添加字段,这里我们可以根据需求创建图片地址
页面元素解析
1.解析字段信息 我们知道蜘蛛运行时会下载要爬取的页面,然后传给给start_urls,页面的返回对象response响应体就会封装到parse方法response对象里面,然后通过response对象css选择器定位元素,返回一个selector对象,通过extract()方法来提取selector对象中标签的信息。 那现在我们使用dribbble网站来试着解析字段信息,创建一个dribbb
URL 字段的解析
1.修改爬取的目标地址我们知道如果想要爬取网站的数据需要在spiders文件中创建一个蜘蛛,创建后这个蜘蛛中会自动生成一个类,类名也是由蜘蛛名加Spider组成,如上一节中爬去csdn网站生成的:CsdnSpider类,这个类中的name也就是蜘蛛的名称,allowed_domains是允许爬取网站的域名,start_urls是需要爬取的目标网站的网址,如果需要更改爬取的目标页面,只需要修改sta
爬虫Scrapy框架之css选择器使用
css选择器介绍 在css中选择器是一种模式,用于选择需要添加样式的元素,css对html页面中的元素实现一对一,一对多或者多对一的控制,都需要用到css选择器,html页面中的元素就是通过css选择器进行控制的; css选择器的基本语法 类选择器:元素的class属性,比如class="box"表示选取class为box的元素; ID选择器:元素的id属性,比如id="box"表示选取i
scrapy框架介绍
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化数据的应用程序框架。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试;Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等; 1.Scrapy五大基本构成 Scrapy框架主要由
Beautiful Soup模块使用
1.Beautiful Soup模块的介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它能将HTML的标签文件解析成树形结构,然后方便地获取到指定标签的对应属性,还可以方便的实现全站点的内容爬取和解析; Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会
requests模块使用
安装 requests# 在命令行工具中使用 pip install requests # 使用前需要导入 import requests 下面我们来看一下requests库的几种常用高级用法 会话对象 会话对象可以跨请求保持某些参数,在同一个 Session 实例发出的所有请求之间保持 cookie,会话也可用来为请求方法提供缺省的数据; from requests impor
异常处理
今天学习的是对测试中的异常进行捕获,主要用到了两个方法,assertRaises()和assertRaisesRegex()方法 测试中的异常捕获 对需要测试的接口异常进行捕获 from unittest import TestCase from unittest import main def division(a, b): return a / b class M
封装mock
1.patch装饰器的概念 patch装饰器是mock第二种实现数据模拟的方式,patch()充当函数装饰器,类装饰器或上下文管理器,可用于处理测试范围内的修补模块和类级属性; 2.patch装饰器语法 语法:unittest.mock.patch(target,new = DEFAULT,spec = None,create = False,spec_set = None,autospec
mock介绍
1.mock概念mock又叫模拟,是Python中一个用于测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为;从Python 3.3开始,mock模块已经被合并到标准库中,被命名为unittest.mock,可以直接import进来使用。Mock对象就是mock模块中的一个类的实例,这个类的实例可以用来替换其他的Python对象,来达到模拟的效果; 2.M
unittest生成测试报告
1.把测试案例的结果写入文件 在测试套件中,修改用于执行测试用例集的runner,增加一个上下文管理器with语句,例如:with open('文件名', 'w+') as f,其中f表示一个流对象,然后把流对象加入TextTestRunner类的参数stream中,例如:runner = TextTestRunner(stream=f),然后运行,项目中就能生成一个文件,文件中的内容就是测试用
unittest断言的使用
断言使用 我们可以直接在测试用例里面添加unittest框架自带的断言(也就相当于判断),断言方法提供了测试结果是True还是False,所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回; 如果断言失败则抛出一个AssertionError,并标识该测试为失败状态;如果成功,则标识该测试为成功状态;如果异常,则当做错误来处理; 先来看一个实例,在
unittest使用
1.单元测试 单元测试是指对软件中的最小可测试单元进行检查和验证,Python中有一个自带的单元测试框架unittest模块,不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果; 2.unittest库中的基本组件 unittest.TestCase():是所有测试用例类继承的基本
requests第三方库在测试中的使用
1.requests库文档链接 官方文档:http://www.python-requests.org/en/master/ 第三方中文文档:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 2.使用requests发送get请求 使用requests发送get请求,首先需安装requests模块,然后导