【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千…
2018-06-17 23:52:57来源:未知 阅读 ()
所谓图片爬虫,就是从互联网中自动把对方服务器上的图片爬下来的爬虫程序。
有些图片是直接在html文件里面,有些是隐藏在JS文件中,在html文件中只需要我们分析源码就能得到
如果是隐藏在JS文件中,那么就需要进行抓包分析,这儿先只讲分析html源码得出图片,
注意 这儿我们需要读取的是高清原图,不是经过网站处理过的小图片。
首先需要根据网址进行分析,分析出每一类商品的第几页第几页的网址之间的关联进行自动加载指定页码(例如淘宝每下一页为链接中s加44)
然后查看页面源码,找到图片对应的链接,分析剔除掉后加修饰过的内容,将关键的内容截取在源码中进行搜索即可找到图片的原始地址
也就是源码的地址。根据这个就能得到所要构造的正则表达式。
然后直接上代码
import urllib.request import re import urllib.error keyname = "短裙" key = urllib.request.quote(keyname) #进行编码 #伪装浏览器 (因为淘宝能够识别是否为爬虫程序) headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36") opener = urllib.request.build_opener() opener.addheaders = [headers] #将opener添加为全局 urllib.request.install_opener(opener) #要爬取多少页那么进行多少次循环 for i in range(0,2): url = "https://s.taobao.com/search?q="+key+"&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20171209&ie=utf8&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(i * 44) #先对所在的页面的主页进行爬取读取内容,也就是读取源码 data = urllib.request.urlopen(url).read().decode("utf-8","ignore") #构造正则表达式 pattern = 'pic_url":"//(.*?)"' #在当前页根据正则进行查找,查找到的所有连接存储为一个list imagelist = re.compile(pattern).findall(data) #遍历列表进行每个图片的存储到本地文件夹 for j in range(0,len(imagelist)): thisimg = imagelist[j] thisimageurl = "http://"+thisimg file = "E://pythoncode/taobaoimg1/"+"b"+str(i)+str(j)+".jpg" urllib.request.urlretrieve(thisimageurl,file)
同理进行一个千图网(http://www.58pic.com/)的高清原图的爬取
第一步也是分析网站的源码找到规律实现下一页的加载,然后进行图片链接的分析得到真实高清原图的网址链接构建正则表达式
先对当前页进行爬取,从爬取的内容中使用正则进行页面查找,再对找到的每一个图片链接进行爬取存储到本地文件夹中。
直接上代码
import urllib.request import urllib.error import re key = "chengshi" proxy = urllib.request.ProxyHandler({"http":"202.96.142.2:3128"}) opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler) urllib.request.install_opener(opener) for i in range(1,2): url = "http://www.58pic.com/tupian/"+key+"-0-0-"+str(i)+".html" data = urllib.request.urlopen(url).read().decode("utf-8","ignore") pattern = '"(http://pic.qiantucdn.com/58pic/.*?)!' imagelist = re.compile(pattern).findall(data) # print(imagelist) for j in range(0,len(imagelist)): thisurl = imagelist[j] file = "E:/pythoncode/qiantu/"+str(i)+str(j)+".jpg" urllib.request.urlretrieve(thisurl,file)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash