Scrapy(一)

标签: 笔记

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创建项目和爬虫

  1. 创建项目:scrapy startproject [项目名称]
  2. 创建爬虫:进入到项目所在地(cd [项目名称]),scrapy genspider [爬虫名称]
    ‘网站的域名’
    ##[项目名称]不能和[爬虫名称]相同

xpath解析

xpath教程: https://blog.csdn.net/qq_25343557/article/details/81912992.

xpath快速复制(通往成功的另一条路)

在这里插入图片描述
在这里插入图片描述

版权声明:本文为weixin_45753498原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45753498/article/details/108601653