葵花宝典
Python基本语法
迭代器(iterator)
迭代器相当于一个函数,每次调用都可以通过next()函数返回下一个值,如果迭代结束了,则抛出StopIteration异常。从遍历的角度看这和列表没什么区别,但它占用内存更少,因为不需要一下就生成整个列表。
能够使用for循环逐项遍历数据的对象,我们把它叫做可迭代对象。例如列表、字典和rang()函数都是可迭代对象。可以通过内置的iter()函数来获取对应的迭代器对象。如下代码所示,使用迭代器获取列表中的每个元素。
cathy = ["cathy",10,138.5,True,None]
iter1 = iter(cathy) #生成迭代器对象
print(next(iter1)) #得到第一个值:"cathy"
print(next(iter1)) #得到下一个值:10
类和对象
使用class关键字定义一个类,后接类名,类名后面接冒号(:)。
init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。注意,init两边分别有两个下划线。
self代表类的实例。在定义类的方法时,self要作为参数传递进来,虽然在调用时不必传入相应的参数。
类的属性有:name、age、sex。使用属性时要前面要加上self。
类的方法有:get_name(self),get_information(self)。注意,这里要有参数self。
类的方法与普通的函数只有一个区别,它们必须有一个额外的第一个参数名称,按照惯例它是self。
Scrapy的框架详解
scrapy工作流程
描述:
第①步:爬虫(Spider)使用URL(要爬取页面的网址)构造一个请求(Request)对象,提交给引擎(ENGINE)。如果请求要伪装成浏览器,或者设置代理IP,可以先在爬虫中间件中设置,再发送给引擎。
第②步:引擎将请求安排给调度器,调度器根据请求的优先级确定执行顺序。
第③步:引擎从调度器获取即将要执行的请求。
第④步:引擎通过下载器中间件,将请求发送给下载器下载页面。
第⑤步:页面完成下载后,下载器会生成一个响应(Response)对象并将其发送给引擎。下载后的数据会保存于响应对象中。
第⑥步:引擎接收来自下载器的响应对象后,通过爬虫中间件,将其发送给爬虫(Spider)进行处理。
第⑦步:爬虫将抽取到的一条数据实体(Item)和新的请求(如下一页的链接)发送给引擎。
第⑧步:引擎将从爬虫获取到的Item发送给项目管道(ITEM PIPELINES),项目管道实现数据持久化等功能。同时将新的请求发送给调度器,再从第②步开始重复执行,直到调度器中没有更多的请求,引擎关闭该网站。
Scrapy的安装
pip install scrapy -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
如不行请尝试
window系统下:
报错:no module named’win32api’,需要安装pip install pypiwin32
Scrapy框架的功能
以下介绍下主要文件的作用
文件 | 作用 |
---|---|
items.py | 用来存放爬虫爬取下来数据的模型 |
middlewares. py | 用来存放各种中间件的文件 |
pipelines.py | 用来将items 的模型存储到本地磁盘中 |
settings.py | 本爬虫的- -些配置信息(比如请求头、多久发送一次请求、ip代理池等) |
scrapy.cfg | 项目的配置文件 |
spiders包 | 以后所有的爬虫,都是存放到这个里面 |
创建Scrapy创建项目和爬虫
- 创建项目:scrapy startproject [项目名称]
- 创建爬虫:进入到项目所在地(cd [项目名称]),scrapy genspider [爬虫名称]
‘网站的域名’
##[项目名称]不能和[爬虫名称]相同
xpath解析
xpath教程: https://blog.csdn.net/qq_25343557/article/details/81912992
xpath快速复制(通往成功的另一条路)