Python爬虫入门
未读对于规模小、爬取数据量小、对爬取速度不敏感的爬虫程序, 使用 Requests 能轻松搞定。
这些爬虫程序主要功能是爬取网页、玩转网页。
如果我们需要爬取网站以及系列网站,要求爬虫具备爬取失败能复盘、爬取速度较高等特点。
很显然 Requests 不能完全满足我们的需求。
因此,需要一功能更加强大的第三方爬虫框架库 —— Scrapy
1.简介 ScrapyScrapy 是一个为了方便人们爬取网站数据,提取结构性数据而编写的分布式爬取框架。
它可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中。
因其功能颇多,所以学会它需要一定的时间成本。
1-1.Scrapy 的特性Scrapy 是一个框架。因此,它集一些各功能强大的 python 库的优点于一身。下面列举其一些特性:
HTML, XML源数据 选择及提取 的内置支持
提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。
通过 feed导出 提供了多格式(JSON、CSV、XML),多存储后端(FTP、S3、本地文件系统)的内置支持
提供了media ...
Python编程
未读数据结构,我们对它已经是耳熟能详。
对于计算机相关专业的大学生来说,它是一门专业必修课。
从事软件开发的人员则把它作为谋生必备技能。这充分体现数据结构的重要性。
因此,我们对数据结构是不得不学。
虽然数据结构的实现不限制语言,但市面上很多教程书籍都是以 C 语言作为编程语言进行讲解。
如果你喜欢且在学习 Python,可能会陷入苦于这样的烦恼中。
那就是没有 Python 版本的数据结构实现代码。
莫慌!我给大家推荐一个第三方库,它能让你这种烦恼立刻云消雾散。
GitHub仓库
Pygorithm 是由一个热心肠的印度小哥编写的开源项目。
他编写创建该库的初衷是出于教学目的。
我们不仅可以阅读源码的方式学习数据结构,而且可以把它当做现成工具来使用。
1.安装安装 python 库,我推荐使用 pip 方式,方便又省事。
1234pip install Pygorithm# 如果出现因下载失败导致安装不上的情况,可以先启动 ss 再执行安装命令# 或者在终端中使用代理pip --proxy http://代理ip:端口 install Pygorithm
2.支持的类型Pygor ...
Python爬虫实战
未读前面两篇文章介绍 requests 和 xpath 的用法。我们推崇学以致用,所以本文讲解利用这两个工具进行实战。
1.爬取目标本次爬取的站点选择电影天堂,网址是: www.ydtt8.net。
爬取内容是整个站点的所有电影信息,包括电影名称,导演、主演、下载地址等。具体抓取信息如下图所示:
2.设计爬虫程序2-1.确定爬取入口电影天堂里面的电影数目成千上万,电影类型也是让人眼花缭乱。
我们为了保证爬取的电影信息不重复, 所以要确定一个爬取方向。
目前这情况真让人无从下手。
但是,我们点击主页中的【最新电影】选项,跳进一个新的页面。蓦然有种柳暗花明又一村的感觉。
由图可知道,电影天堂有 5 个电影栏目,分别为最新电影、日韩电影、欧美电影、国内电影、综合电影。
每个栏目又有一定数量的分页,每个分页有 25 条电影信息。
那么程序的入口可以有 5 个 url 地址。
这 5 个地址分别对应每个栏目的首页链接。
2-2.爬取思路知道爬取入口,后面的工作就容易多了。
我通过测试发现这几个栏目除了页面的 url 地址不一样之外,其他例如提取信息的 xpath 路径是一样的。
因此,我把 5 ...
Python爬虫入门
未读前面的文章,我们已经学会正则表达式以及 BeautifulSoup库的用法。
我们领教了正则表达式的便捷,感受 beautifulSoup 的高效。
本文介绍也是内容提取的工具 —— Xpath,它一般和 lxml 库搭配使用。
所以,我称这两者为“干将莫邪”。
1.Xpath 和 lxml1-1.XpathXPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath 基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。
Xpath 原本是用于选取 XML 文档节点信息。XPath 是于 1999 年 11 月 16 日 成为 W3C 标准。因其既简单方便又容易,所以它逐渐被人所熟知。
1-2.lxmllxml 是功能丰富又简单易用的,专门处理 XML 和 HTML 的 Python 官网标准库。
2.Xpath 的语法正则表达式的枯燥无味又学习成本高,Xpath 可以说是不及其万分之一。所以只要花上 10 分钟,掌握 Xpath 不在话下。Xpath 的语言以及如何从 HTML dom 树中提取信息,我将其归纳为“主干 ...
我最近阅读民主与建设出版社出版的《如何阅读一本书》,自己收获颇多。
这本书算是经典之作。以通俗的语言告诉我们如何选择书籍?究竟要以什么方法来阅读一本书?
我将自己学到的分享出来。希望能帮助大家提高阅读速度,把书籍读得更加明白,记得更牢固。
1.为什么要阅读?在进入本文主题之前,我们先思考一个问题 —— 我们为什么要阅读?你可以不必急着回答这个问题,带着问题来往下读。
古人有很多名句鼓励学子多读书,例如宋真宗赵恒的《劝学诗》,其中有我们耳熟能详的语句:
书中自有千种粟书中自有黄金屋书中车马多如簇书中自有颜如玉
由此可见,阅读是手段。我们可以通过读书来获得赖以谋能的技能。
那么问题来了?我们要阅读什么书?随便阅读一本书就能获取知识吗?
答案是否定的。
所以我们要读好书,还要掌握些阅读的技巧。
2.阅读什么书?市面上书籍种类琳琅满目。我们该如何选择书籍?先来看看书籍的分类
第一类:如同主食能够解决职业、生活、生理、心理等方面的现实问题的书籍都可以称为“主食”。
“主食”是我们的刚需。所以我们就应该花大量时间去阅读。
举个栗子,假如你是一名 Android 粉丝,想通过学习 Androi ...
Python爬虫入门
未读如果你把上篇多线程和多进程的文章搞定了,那么要恭喜你了 。
你编写爬虫的能力上了一个崭新的台阶。
不过,我们还不能沾沾自喜,因为任重而道远。
那么接下来就关注下本文的主要内容。
本文主要介绍 urllib 库的代替品 —— Requests。
1.Requests 简介引用 Requests 官网的说明:
Requests is the only Non-GMO HTTP library for Python, safe for human consumption.
Requests 官方的介绍语是多么霸气。之所以能够这么霸气,是因为 Requests 相比 urllib 在使用方面上会让开发者感到更加人性化、更加简洁、更加舒服。
并且国外一些知名的公司也在使用该库,例如 Google、Microsoft、Amazon、Twitter 等。
因此,我们就更加有必要来学习 Request 库了。
在学习之前,我们来看下它究竟具有哪些特性?
具体如下:
Keep-Alive & 连接池
国际化域名和 URL
带持久 Cookie 的会话
浏览器式的 SSL 认证
自动内容 ...
Python爬虫入门
未读
前言:为什么有人说 Python 的多线程是鸡肋,不是真正意义上的多线程?
看到这里,也许你会疑惑。这很正常,所以让我们带着问题来阅读本文章吧。
问题:1、Python 多线程为什么耗时更长?2、为什么在 Python 里面推荐使用多进程而不是多线程?
1.基础知识现在的 PC 都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率。
1-1.线程线程是一个基本的 CPU 执行单元,它必须依托于进程存活。
一个线程是一个execution context(执行上下文),即一个 CPU 执行时所需要的一串指令。
1-2.进程进程是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调用的独立单位。
可以简单地理解为操作系统中正在执行的程序。也就说,每个应用程序都有一个自己的进程。
每一个进程启动时都会最先产生一个线程,即主线程。然后主线程会再创建其他的子线程。
1-3.两者的区别
线程必须在某个进行中执行。
一个进程可包含多个线程,其中有且只有一个主线程。
多线程共享同个地址空间、打开的文件以及其他资源。
多进程共享物理内存、磁盘、打印机以及其他资源。
1- ...
Python爬虫实战
未读我们已经学习 urllib、re、BeautifulSoup 这三个库的用法。
但只是停留在理论层面上,还需实践来检验学习成果。
因此,本文主要讲解如何利用我们刚才的几个库去实战。
1.确定爬取目标任何网站皆可爬取,就看你要不要爬取而已。本次选取的爬取目标是当当网,爬取内容是 以 Python 为关键字搜索出来的页面中所有书籍的信息。
具体如下图所示:
本次爬取结果有三项:
图书的封面图片
图书的书名
图书的链接页面最后把这三项内容保存到 csv 文件中。
2.爬取过程众所周知,每个站点的页面 DOM 树是不一样的。
所以我们需要先对爬取页面进行分析,再确定自己要获取的内容,再定义程序爬取内容的规则。
2-1.确定 URL 地址我们可以通过利用浏览器来确定URL 地址,为 urllib 发起请求提供入口地址。
接下来,我们就一步步来确定请求地址。
搜索结果页面为 1 时,URL 地址如下:
搜索结果页面为 3 时,URL 地址如下:
搜索结果页面为 21 时,即最后一页,URL 地址如下:
从上面的图片中,我们发现 URL 地址的差异就在于 page_index 的值, ...
Python爬虫入门
未读上篇文章只是简单讲述正则表达式如何读懂以及 re 常见的函数的用法。
我们可能读懂别人的正则表达式,但是要自己写起正则表达式的话,可能会陷入如何写的困境。
正则表达式写起来费劲又出错率高,那么有没有替代方案呢?
俗话说得好,条条道路通罗马。
目前有两种代替其的办法,一种是使用 Xpath 神器,另一种就是本文要讲的 BeautifulSoup。
1.BeautifulSoup 简介引用 BeautifulSoup 官网的说明:
Beautiful Soup is a Python library for pulling data out of HTML and XML files. It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. It commonly saves programmers hours or days of work.
大致意思如下: BeautifulSoup 是一个能从 HT ...
Python爬虫入门
未读我们能够使用 urllib 向网页请求并获取其网页数据。
但是抓取信息数据量比较大,我们可能需要其中一小部分数据。对付刚才的难题,就需要正则表达式出马了。
正则表达式能帮助我们匹配过滤到我们需要的数据,但它学习起来非常枯燥无味。
你可能会说,我还没有开始想学习正则表达式,你就来打击我?
莫慌!
层层递进地学习,一步一个脚印地学习,很快就会学会了。
对于爬虫,我觉得学会最基本的符号就差不多了。
1.正则表达式下面是一张关于正则表达式字符的图,图片资料来自CSDN。先把图中字符了解清楚,基本上算是入门。
2.re 模块Python 自 1.5 版本起通过新增 re (Regular Expression 正则表达式)模块来提供对正则表达式的支持。
使用 re 模块先将正则表达式填充到 Pattern 对象中,再把 Pattern 对象作为参数使用 match 方法去匹配的字符串文本。
match 方法会返回一个 Match 对象,再通过 Match 对象会得到我们的信息并进行操作。
下面介绍几个 re 常用的函数。
2-1.compile 函数compile 是把正则表达式的模式和 ...