正则表达式基础

正则表达式用于处理字符串,拥有自己独立的语法以及一个独立的处理引擎。
不同提供正则表达式的语言里正则表达式的语法都式一样。

. 和 * +

. 匹配任意一个字符
*匹配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这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。


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框架的使用相关推荐

  1. [python爬虫之路day19:] scrapy框架初入门day1——爬取百思不得姐段子

    好久没学习爬虫了,今天再来记录一篇我的初入门scrapy. 首先scrapy是针对大型数据的爬取,简单便捷,但是需要操作多个文件以下介绍: 写一个爬虫,需要做很多的事情.比如: 发送网络请求, 数据解 ...

  2. 【python爬虫02】使用Scrapy框架爬取拉勾网招聘信息

    使用Scrapy框架爬取拉勾网招聘信息 最近接触了Scrapy爬虫框架,简单写了个爬虫爬取拉钩网的招聘信息,加深对Scrapy框架的理解,不得不说Scrapy框架其实还是蛮方便的,就像爬虫流水线一样, ...

  3. Python爬虫进阶三之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  4. Python 爬虫进阶三之 Scrapy 框架安装配置

    初级的爬虫我们利用 urllib 和 urllib2 库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架 Scrapy,这安装过程也是煞费苦心哪,在此整理如下. 官网 官方安装文档 安装p ...

  5. Python爬虫实战之利用Scrapy框架爬取传智播客课程数据

    1.文件结构: 2.lesson.py代码 import scrapy from ts.items import TsItem from scrapy.http import Requestclass ...

  6. 爬虫 第六讲 Scrapy框架

    文章目录 爬虫 第六讲 Scrapy框架 一.Scrapy框架 Scrapy简介 工作流程 Scrapy入门 pipline使用 1.scrapy.Request知识点 2.item的介绍和使用 3. ...

  7. Python可视化数据分析02、Scrapy框架-强化测试Scrapy-CSS

    Python可视化数据分析02.Scrapy框架

  8. Python基础知识回顾及scrapy框架爬虫基础

    1.函数 函数参数:必须 默认 关键 可变 函数种类:外部 内部 匿名 lambda 装饰函数:@语法糖 函数总是要返回的 ,若没有return,None总是被返回   2.面向对象: 对象:已存在, ...

  9. Python:Pycharm如何使用scrapy框架做爬虫?

    因为入门python以来一直使用pycharm,所以对着黑白的DOS不习惯,所以此次来实现使用pycharm进行实现使用scrapy框架 ①pip install scrapy(首先安装scrapy第 ...

最新文章

  1. 论强化学习的根本缺陷
  2. .NET Regular Expressions
  3. Android之Bitmap的内存优化方案总结
  4. perl连接oracle的方法,Perl 连接Oracle 数据库
  5. node.js服务器+mongodb数据库(重拾)
  6. js 各种事件 如:点击事件、失去焦点、键盘事件等
  7. java addmonth_JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
  8. *第十三周*数据结构实践项目二【验证Kruskal算法】
  9. 405.十六进制数 (力扣leetcode) 博主可答疑该问题
  10. linux 图片批量裁处理,linux下使用Image Magick批量处理图片
  11. 【搞个事】主页被劫持,改注册表进行修复
  12. 今天,给大家推荐一下我的好友:爱迪生
  13. 重磅!2021年国内Java培训机构排名十强出炉啦!
  14. C语言中的scanf、getchar、putchar、gets、puts
  15. 四个问题,判断自己是否适合学习编程
  16. 微信特殊字符包括颜文字、表情的后台存储及前端展示方法
  17. 2021百度网盘网页版视频在线倍速播放
  18. 安装win8的坎坷经历
  19. Red and Black 模板题 /// BFS oj22063
  20. android之ListView布局

热门文章

  1. 欢迎进入GeekYang博客导航一站式搜索(所有博客的汇总帖)
  2. 鼠标右键菜单跑到左边改回右边显示
  3. 什么是uni-app呀?
  4. 【LeetCode-SQL】580. 统计各专业学生人数
  5. java基础 equals与hashCode
  6. Web前端:React Native Web与React — 比较指南
  7. SSM框架实现插入图片显示图片到JSP界面
  8. 小米路由器 ping 测试软件,小米路由器3 测试: 自建简单智能家居
  9. 实战goldengate:安装配置+数据初始化+单向DML复制
  10. java递归把list菜单列表转为菜单树