Python爬虫入门
未读上篇文章介绍了爬虫框架 Scrapy 如何安装,以及其特性、架构、数据流程。
相信大家已经对 Scrapy 有人了初步的认识。
本文是 Scrapy 系列文章的第二篇,主要通过一个实例讲解 scrapy 的用法。
1.选取目标网络爬虫,顾名思义是对某个网站或者系列网站,按照一定规则进行爬取信息。
爬取程序的首要工作当然是选定爬取目标。
本次爬取目标选择是V电影,网址是http://www.vmovier.com/。
爬取内容是[最新推荐]栏目的前15条短视频数据信息。具体信息包括封面、标题、详细说明以及视频播放地址。
2.定义 Item为什么将爬取信息定义清楚呢?
因为接下来 Item 需要用到。在 Item.py 文件中,我们以类的形式以及 Field 对象来声明。
其中 Field 对象其实是一个字典类型,用于保存爬取到的数据。而定义出来的字段,可以简单理解为数据库表中的字段,但是它没有数据类型。
Item 则复制了标准的 dict API,存放以及读取跟字典没有差别。
V电影的 Item,我们可以这样定义:
12345678910111213import scrapyclas ...
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 ...