学了python一个多月了,也该自己动动手写个爬虫了
目标网址:
http://enrz.com/fhm/2017/12/27/99997.html
目标内容:某一女郎的图片
原理:
1.保存网页源代码
- 笨办法,人工复制源代码到txt文件,再用open方法打开
- 用requests.get
2.正则表达式匹配图片网址
3.下载图片
搞懂原理后,进入实际操作:
- 获取网页源码我选的是笨办法,进入目标网址右击选择查看网页源码,复制网页源码,然后在pycharm工程里面新建一个txt文件,将源码放进去。
- 寻找到我们的目标,因为我们要下载的是某一个女郎的图片,所以进入F12或者右击网页点击审查元素进入开发者模式通过查找定位功能找到图片对应的网址
- 书写正则表达式
<img class=" size-full wp-image-99998 aligncenter" src="http://images.enrz.com/wp-content/uploads/2017/11/webwxgetmsgimg-2.jpg" alt="webwxgetmsgimg (2)" width="3731" height="4707">
我们要提取的是src跟alt中间的部分,所以正则表达式为
'src="(.*?)" alt='
- 开始下载
- 结果
- 以下为源码
# coding=utf-8 import re import requests #读取网页源码 f = open('source.txt', 'r',encoding='UTF-8') html = f.read() f.close() #match url of pictures pic_url = re.findall('src="(.*?)" alt=',html,re.S) i = 0 for each in pic_url: print('now downloading'+each) pic = requests.get(each) fp = open('pic\\'+str(i)+'.jpg','wb') fp.write(pic.content) fp.close() i += 1
在做这个爬虫过程中遇到的一些问题:
- pycharm中import requests报错
检查发现已经安装了requests包,运行环境也正常,后来发现是interpreter没有正确配置,经配置后可以正常导入requests包
2.在运行到f.read()时出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xb7 in position 219: illegal multibyte sequence
发现是文件读取出现编码格式出错,尝试了用‘rb’打开,但是又跳出了另外的错误,所以感觉不对,又尝试在‘r’后加上了encoding=‘UTF-8’最后无错误,以上尝试来自百度。
3.编码格式错误解决后发现程序没有结果
通过调试在i=0处设置断点进行debug,发现pic_url为空,所以应该是正则表达式出了错误,经反复检查后终于修改正确,最后爬取图片成功
年轻人的第一个爬虫总算是完成了,期间遇到了种种问题也是通过仔细思考以及百度解决了,虽然是一个非常非常简单的爬虫,但是也让我收获了意想不到的结果,简单的爬虫制作完,以后还会慢慢进阶。