干将莫邪” —— Xpath 与 lxml 库
前面的文章,我们已经学会正则表达式以及 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 ...
详解 Requests 库的用法
如果你把上篇多线程和多进程的文章搞定了,那么要恭喜你了 。
你编写爬虫的能力上了一个崭新的台阶。
不过,我们还不能沾沾自喜,因为任重而道远。
那么接下来就关注下本文的主要内容。
本文主要介绍 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 的值, ...
内容提取神器 beautifulSoup 的用法
上篇文章只是简单讲述正则表达式如何读懂以及 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 是把正则表达式的模式和 ...
详解 python3 urllib
本文是爬虫系列文章的第一篇,主要讲解 Python 3 中的 urllib 库的用法。
urllib 是 Python 标准库中用于网络请求的库。
该库有四个模块,分别是urllib.request,urllib.error,urllib.parse,urllib.robotparser。其中urllib.request,urllib.error两个库在爬虫程序中应用比较频繁。
那我们就开门见山,直接讲解这两个模块的用法。
1.发起请求模拟浏览器发起一个 HTTP 请求,我们需要用到 urllib.request 模块。
urllib.request 的作用不仅仅是发起请求, 还能获取请求返回结果。
发起请求,单靠 urlopen() 方法就可以叱咤风云。
我们先看下 urlopen() 的 API
1urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
第一个参数 String 类型的地址或者
data 是 byte ...
学爬虫之道
近来在阅读 《轻量级 Django》,虽然还没有读完,但我已经收益颇多。
我不得不称赞 Django 框架的开发人员,他们把 Web 开发降低门槛。
Django 让我从对 Web 开发是一无所知到现在可以编写小型 web 应用,这很舒服。
Django 已经算是入门,所以自己把学习目标转到爬虫。
自己接下来会利用三个月的时间来专攻 Python 爬虫。
这几天,我使用“主题阅读方法”阅读 Python 爬虫入门的文档。制定 Python 爬虫的学习路线。
第一阶段:夯实入门要就是在打基础,所以要从最基础的库学起。下面是几个库是入门最经典的库
1.urllib它属于 Python 标准库,该库的作用是请求网页并下载数据。
在学习该库之前,最好把 HTTP 协议了解下。这会大大提高后面的学习效率。
先学会如何使用 urllib 请求到数据,再学习一些高级用法。例如:
设置 Headers: 某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。设置 Headers 可以把请求伪装成浏览器访问网站。
Proxy 的设置: 某些站点做了反倒链的设置,会将高频繁访问的 IP 地址封掉。所以我们需 ...
你为何要那么拼命?
很多人往往有这样的状态,当完成一个目标之后,就守着这收获的成果沾沾自喜。
你觉得考上了大学,就可以整天逃课沉迷于游戏?
你觉得找到工作了,就可以准时下班走人,天天潇潇洒洒?
答案是否定的。
如果你是现在身处这状态,说明你对自己未来人生没有什么规划,是对自己极其不负责任的表示。
你试问你自己,是否有在为自己拼命?
何炅, 这个名字已经家喻户晓了。
大家都知道他是大名鼎鼎的湖南电视台主持人。
平时我们都在享受何老师给我们带来快乐,可知背后辛酸的汗水呢?
何老师在读大学三年级时,每天需要应对高难度的阿拉伯语的学习,还担任着学生会的工作,兼职文艺部和宣传部的“要职”。
除此之外,他还在央视担任支持,平日要撰写台本以及录影,有时还要出差去外地录制。每天他都很晚才回到学校,同学们可能已经下了晚自习,甚至都已经入睡了。
而他只能先在学生会里将自己学生干部的事情都做完后,再回到宿舍开始预习第二天上课要准备的内容。
彭宇年轻的时还是街头一个小混混。
当他树立人生中第一个梦想————进入电视台工作,生活从此跟之前是天壤之别。
他时常对着电视机练习如何应对突发,还报名参加骗子的演员培训班。
到了后来,他 ...