@兰博怎么玩儿
接触爬虫不久,特利用此笔记记录一下爬虫学习过程和心得,如有错误请批评指正。
本文介绍:开发爬虫的一些基本的准备以及利用requests库获取网页源代码;接着介绍如何使用正则表达式处理爬取到的源代码信息。最后展示一个实例:利用正则表达式,爬取小说《斗破苍穹》(http://www.doupoxs.com/doupocangqiong/)的所有章节,并按章节存储在本地不同的txt文件中。
1、准备
- python版本 3.5.0 + 任意一款python编译软件 + Chrome浏览器
- 安装第三方库:我用的是pip方式安装,在命令行cmd中输入:
pip install #packagename
其中,#packagename为安装库的名称
2、requests的使用
python利用requests库来访问网页,常用的方式有两种:Get与Post方式。前者是直接通过网址访问网页,较为常用;后者访问的是网页从某个网页的链接跳转而来。打开Chrome浏览器,按F12进入开发者工具,“Network-Headers”选项卡里的General中可以看到目标网页的访问方式。
- Get方式
import requests
wb_data = requests.get(url,headers=headers)
其中,url是目标网站的网址,headers为请求头。
若请求成功,我们打印wb_data得到的是:
<Response [200]>
此外,请求状态值还可以是:303重定向、400请求错误、401未授权、403禁止访问、404文件未找到、500服务器错误。
有时候为了防止目标网站检测到你使用爬虫程序而拒绝访问,通常使用请求头让程序伪装成浏览器访问网站。按F12进入开发者工具,“Network”选项卡里的Request Headers中的内容就是请求头:
请求头以字典的形式表示,通常我们只需要User-Agent这一项便可以正常访问,但是建议使用请求头的全部内容。
有时候要对获取的网页进行编码操作,使一些中文等内容正常显示:
import requests
wb_data = requests.get(url,headers=headers).content.decode('GBK')
其中解码方法decode(),在省略参数的时候默认是"UTF-8"编码格式,将content()方法得到的bytes型网页解码成字符串型的源代码。"UTF-8"也是最为常见的编码格式,具体网站那种格式编码,一般显示在源代码最开始的地方。
- Post方式
有时候目标网站需要提交某些数据才能访问,这时需要Post方法:
import requests
data={
'name'