近期学了几天的python爬虫,在一个人瞎摸索中吸取了很多经验,在此把自己的初学者学习的经验拿出来分享。
下面讲的是python3,没了解过python2,不过似乎有些地方两者区别很大。
入门python3爬虫需要对一些库和模块有一定的了解,还需学会查看网页源代码的技巧,并了解一些爬虫框架。
一、认识urllib库
urllib是用于获取网络资源的库,python3自带。
初学爬虫者,主要是掌握urllib库中request模块的一堆函数功能。
有必要的话,也可以学习一下error模块。
request模块一些常用到的函数
函数 | 功能简介 |
Request | 返回一个Request对象,因为对象有些常用的方法,故而必要的时候需要用到。 |
urlopen | 通过直接给的URL或者Request对象化后的URL,返回一个含有该URL的网页源码的对象。 |
ProxyHandler | 跟代理有关函数,搭建与代理的通信 |
build_opener | 跟代理有关函数,创建一个opener对象 |
install_opener | 安装opener |
一些常用到的方法
方法 | 功能简介 |
read() | 用于读urlopen函数返回对象中的网页源码 |
encode() | 编码 |
decode() | 解码 |
编码解码还有这两种函数,str是关于编码的函数,bytes是关于解码的函数。
网页涉及到的编码经常有’utf-8’和’'gb18030’等。
二、认识一些模块
re模块
首先,需要了解的是 re模块——正则表达式模块。
正则表达式是什么?可以这么说,是用于快速从一大堆字符中快速找出想要的子字符串的一种表达方式。函数+表达方式=快速找出子字符串。 这个模块是初学者必须要弄清楚的,内容比较多,在这里就不多说了。
os模块
可用于对文件文本的操作,可以创建文件夹,访问文件夹内容等(博主对该库了解不深,只用来创建过文件夹和访问文件夹内容)
可以了解的函数有 创建文件夹用的函数mkdir和chdir、访问文件夹里的所有文件函数listdir。
csv模块
爬取出来的数据可以以csv的格式保存,可以用office办公软件中的Excel表格软件打开。
网上给出的写法有好几种,在此给出博主的写法。
首先你需要了解内置函数open的newline参数用法,在这里,用与去除存入csv文件时多出来的空行。
csv模块函数
writer,返回一个对写入数据操作的对象。
writerow,参数是列表,在表格中写入一行数据。
import csv
filename = '统计.csv'
fileheader = ['姓名', '性别']
contexts = [['小明', '男'], ['小刚', '男'], ['小红', '女'], ['小花', '女']]
with open(filename, 'w', newline='', encoding='gb18030') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(fileheader)
for people in contexts:
csv_writer.writerow(people)
import csv
filename = '统计.csv'
fileheader = ['姓名', '性别']
contexts = [['小明', '男'], ['小刚', '男'], ['小红', '女'], ['小花', '女']]
with open(filename, 'w', newline='', encoding='gb18030') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(fileheader)
for people in contexts:
csv_writer.writerow(people)
三、查看网页源码
网站的文字内容,图片网址,基本都在该网站的网页源码。故而爬取时,先把该网站的网页源码爬取出来,然后从网页源码中筛选出自己想要的数据。用正则表达式从网页源码中筛选信息时,需要先看网页源码来制定好合适的正则表达式。
一般鼠标右击该网页,找到”查看网页源代码“这一选项即可打开。
快捷键:Ctrl + U
不过网页源代码太多太乱,有的时候找信息并不容易,可以使用Ctrl+F查找功能进行查找。
也可以在网页中,找到你想爬取的信息,然后右击该信息位置,找到”审核元素"或者"检查"选项,可以看到整齐简洁的代码。
但是,爬取信息都是基于网页源代码的,而"检查"选项给出的代码可能与源代码不一样,这样的话就会出错。这涉及到网络编程知识,不作解释。
四、认识一些爬虫框架
爬虫框架实用的有名气大的Beautiful Soup、强大的Scrapy、分布式cola等。
这些都需要下载,下载对于新手来说比较麻烦。
安装路径太过麻烦,在此就不多说了。