python爬虫的基本原理以及scrapy框架的使用
正则表达式基础
正则表达式用于处理字符串,拥有自己独立的语法以及一个独立的处理引擎。
不同提供正则表达式的语言里正则表达式的语法都式一样。
. 和 * +
. 匹配任意一个字符
*匹配0或多次前面出现的字符
.* 表示0或无限次的"."
+匹配的字符至少要出现一次
^ 和$
^表示以某字符开头的匹配
$ 表示以某字符结尾的匹配
^a.* 表示匹配任何以a开头的字符串
.*k$表示匹配任何以k结尾的字符串
?
python爬虫中正则的使用
比如用一爬虫爬取一个网页中的全部图片,用正则表达式匹配图片链接
#coding=utf-8
import urllib.request
import re
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read()
return html
def getImg(html):
html = html.decode(‘utf-8’)
reg = r’src="(.+?.jpg)" pic_ext’
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
x = 0
for imgurl in imglist:
urllib.request.urlretrieve(imgurl,’%s.jpg’ % x)
x+=1
print(‘Getting the %s picture’ % x)
html = getHtml(“https://tieba.baidu.com/p/2460150866?pn=3”)
getImg(html)
网络爬虫
所谓网络爬虫就是,抓取特定网站网页的html数据。
Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都F可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
所谓网络爬虫就是,抓取特定网站网页的HTML数据。抓取网页的一般方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。
Scrapy 使用 Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
![](/doc/exper/118/img/01.png)
Scrapy整体架构
1.引擎(Scrapy Engine),用来处理整个系统的数据流处理,触发事务。
2.调度器(Scheduler),用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
3.下载器(Downloader),用于下载网页内容,并将网页内容返回给蜘蛛。
4.蜘蛛(Spiders),蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站
5.项目管道(Item Pipeline),负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
6.下载器中间件(Downloader Middlewares),位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
7.蜘蛛中间件(Spider Middlewares),介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。
8.调度中间件(Scheduler Middlewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。
爬取流程:
首先从初始URL开始,Scheduler会将其交给Downloader进行下载,下载之后会交给Spider进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,抓取到的东西会被传回Scheduler;另一种是需要保存的数据,它们被送到Item Pipeline那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。
scrapy在windows下安装及遇到的问题
重新安装了pycharm,下载的最新版本,python环境也重新安装成了python3.7,于是在安装scrapy包时就遇到了很多问题,比如scrapy包无法正常安装,无法找到命令等等,现在我将说出在windows下使用它的正确方法
安装python
我这里直接安装的是python3.7的版本,然后安装的时候忘记了add to path,结果就是命令行里无法直接使用python,然后有了下面这篇文章
Windows下Python的 Path问题解决
如果你在安装python,一定要记得把add to path勾上
安装scrapy
首先你需要找到python的安装目录,如图
然后在cmd中,切换到
C:\Users\hp\AppData\Local\Programs\Python\Python37-32\Scripts
目录下,然后
pip install scrapy
接着就可以新建爬虫项目了。
项目就建立完成了。接着就可以写自己的爬虫了。
No module named 'win32api’问题解决
python爬虫的基本原理以及scrapy框架的使用相关推荐
- [python爬虫之路day19:] scrapy框架初入门day1——爬取百思不得姐段子
好久没学习爬虫了,今天再来记录一篇我的初入门scrapy. 首先scrapy是针对大型数据的爬取,简单便捷,但是需要操作多个文件以下介绍: 写一个爬虫,需要做很多的事情.比如: 发送网络请求, 数据解 ...
- 【python爬虫02】使用Scrapy框架爬取拉勾网招聘信息
使用Scrapy框架爬取拉勾网招聘信息 最近接触了Scrapy爬虫框架,简单写了个爬虫爬取拉钩网的招聘信息,加深对Scrapy框架的理解,不得不说Scrapy框架其实还是蛮方便的,就像爬虫流水线一样, ...
- Python爬虫进阶三之Scrapy框架安装配置
初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...
- Python 爬虫进阶三之 Scrapy 框架安装配置
初级的爬虫我们利用 urllib 和 urllib2 库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架 Scrapy,这安装过程也是煞费苦心哪,在此整理如下. 官网 官方安装文档 安装p ...
- Python爬虫实战之利用Scrapy框架爬取传智播客课程数据
1.文件结构: 2.lesson.py代码 import scrapy from ts.items import TsItem from scrapy.http import Requestclass ...
- 爬虫 第六讲 Scrapy框架
文章目录 爬虫 第六讲 Scrapy框架 一.Scrapy框架 Scrapy简介 工作流程 Scrapy入门 pipline使用 1.scrapy.Request知识点 2.item的介绍和使用 3. ...
- Python可视化数据分析02、Scrapy框架-强化测试Scrapy-CSS
Python可视化数据分析02.Scrapy框架
- Python基础知识回顾及scrapy框架爬虫基础
1.函数 函数参数:必须 默认 关键 可变 函数种类:外部 内部 匿名 lambda 装饰函数:@语法糖 函数总是要返回的 ,若没有return,None总是被返回 2.面向对象: 对象:已存在, ...
- Python:Pycharm如何使用scrapy框架做爬虫?
因为入门python以来一直使用pycharm,所以对着黑白的DOS不习惯,所以此次来实现使用pycharm进行实现使用scrapy框架 ①pip install scrapy(首先安装scrapy第 ...
最新文章
- 论强化学习的根本缺陷
- .NET Regular Expressions
- Android之Bitmap的内存优化方案总结
- perl连接oracle的方法,Perl 连接Oracle 数据库
- node.js服务器+mongodb数据库(重拾)
- js 各种事件 如:点击事件、失去焦点、键盘事件等
- java addmonth_JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
- *第十三周*数据结构实践项目二【验证Kruskal算法】
- 405.十六进制数 (力扣leetcode) 博主可答疑该问题
- linux 图片批量裁处理,linux下使用Image Magick批量处理图片
- 【搞个事】主页被劫持,改注册表进行修复
- 今天,给大家推荐一下我的好友:爱迪生
- 重磅!2021年国内Java培训机构排名十强出炉啦!
- C语言中的scanf、getchar、putchar、gets、puts
- 四个问题,判断自己是否适合学习编程
- 微信特殊字符包括颜文字、表情的后台存储及前端展示方法
- 2021百度网盘网页版视频在线倍速播放
- 安装win8的坎坷经历
- Red and Black 模板题 /// BFS oj22063
- android之ListView布局
热门文章
- 欢迎进入GeekYang博客导航一站式搜索(所有博客的汇总帖)
- 鼠标右键菜单跑到左边改回右边显示
- 什么是uni-app呀?
- 【LeetCode-SQL】580. 统计各专业学生人数
- java基础 equals与hashCode
- Web前端:React Native Web与React — 比较指南
- SSM框架实现插入图片显示图片到JSP界面
- 小米路由器 ping 测试软件,小米路由器3 测试: 自建简单智能家居
- 实战goldengate:安装配置+数据初始化+单向DML复制
- java递归把list菜单列表转为菜单树