本人也是刚刚开始学习python的爬虫技术,而后原本想在网上找点教程来看看,谁知道一搜索,大部分的都是用python2来写的,新手嘛,通常都喜欢装新版本。因而我也就写一个python3简单的爬虫,爬虫一下贴吧的图片吧。话很少说,咱们开始。html
首先简单来讲说一下知识。python
1、什么是爬虫?浏览器
网页上面采集数据函数
2、学习爬虫有什么做用?学习
作案例分析,作数据分析,分析网页结构.......网站
3、爬虫环境url
需求:python3x pycharmspa
模块:urllib 、urllib二、bs四、recode
4、爬虫思路:orm
1. 打开网页,获取源码。
*因为多人同时爬虫某个网站时候,会形成数据冗余,网站崩溃,因此一些网站是禁止爬虫的,会返回403拒绝访问的错误信息。----获取不到想要的内容/请求失败/IP容易被封……..等
*解决办法:假装——不告诉网站我是一个脚本,告诉它我是一个浏览器。(加上随便一个浏览器的头部信息,假装成浏览器),因为是简单例子,那咱们就不搞这些骚操做了。
2. 获取图片
*Find函数 :只去找第一个目标,查询一次
*Find_all函数: 找到全部的相同的目标。
这里可能有一个解析器的问题,咱们也不说了,出问题的同窗百度一堆解决办法。
3. 保存图片地址与下载图片
*a.使用urlib---urlretrieve下载(保存位置:若是保存在跟*.py文件同一个地方,那么只须要文件夹名称便可,若是是其余地方,那么得写绝对路径。)
算了,不说那么多废话,既然是个简单例子,那我就直接贴代码吧。相信也没多少人呢看不懂。
提一句:用BeautifulSoup
就能够不用正则;爬虫用正则,Bs4, xpath三种 选择一个就好。固然也能够混合使用,也还有其余种。
爬取地址:http://tieba.baidu.com/p/3840085725
代码以下:
import urllib.request import re import os import urllib #根据给定的网址来获取网页详细信息,获得的html就是网页的源代码 def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return html.decode('UTF-8') def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) #转换成一个正则对象 imglist = imgre.findall(html) #表示在整个网页中过滤出全部图片的地址,放在imglist中 x = 0 #声明一个变量赋值 path = 'H:\\python lianxi\\zout_pc5\\test' #设置保存地址 if not os.path.isdir(path): os.makedirs(path) # 将图片保存到H:..\\test文件夹中,若是没有test文件夹则建立 paths = path+'\\' #保存在test路径下 for imgurl in imglist: urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x)) #打开imglist,下载图片保存在本地, #format格式化字符串 x = x + 1 print('图片已开始下载,注意查看文件夹') return imglist html = getHtml("http://tieba.baidu.com/p/3840085725") #获取该网址网页详细信息,html就是网页的源代码 print (getImg(html)) #从网页源代码中分析并下载保存图片 |
最后效果如图:
好了,教程到这里就结束了,更多精彩,敬请关注:IT民工_柒晓白
(ps:对于python本人也是新手,文章有任何错误请多多包涵)