【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千图网图片爬虫
所谓图片爬虫,就是从互联网中自动把对方服务器上的图片爬下来的爬虫程序。
有些图片是直接在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)
【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千图网图片爬虫的更多相关文章
- 爬虫实战--基于requests 和 Beautiful的7160美图网爬取图片
import requests import os from bs4 import BeautifulSoup import re # 初始地址 all_url = 'http://www.7160. ...
- python爬虫实战(二)--------千图网高清图
相关代码已经修改调试----2017-3-21 实现:千图网上高清图片的爬取 程序运行20小时,爬取大约162000张图片,一共49G,存入百度云.链接:http://pan.baidu.com/s/ ...
- 千图网爬图片(BeautifulSoup)
import requests from bs4 import BeautifulSoup import os #导入os模块 class TuKuSpider(): ""&quo ...
- 爬虫实战3:使用request,bs4爬动态加载图片
参考网站:https://blog.csdn.net/Young_Child/article/details/78571422 在爬的过程中遇到的问题: 1.被ban:更改header的User-Ag ...
- [原创] Python3.6+request+beautiful 半次元Top100 爬虫实战,将小姐姐的cos美图获得
1 技术栈 Python3.6 Python的版本 request 得到网页html.jpg等资源的lib beautifulsoup 解析html的利器 html5lib 指定beautifulso ...
- 爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求
6.21自我总结 一.爬取斗图网 1.摘要 使用xpath匹配规则查找对应信息文件 将请求伪装成浏览器 Referer 防跨域请求 2.爬取代码 #导入模块 import requests #爬取网址 ...
- python爬取千库网
url:https://i588ku.com/beijing/0-0-default-0-8-0-0-0-0-1/ 有水印 但是点进去就没了 这里先来测试是否有反爬虫 import requests ...
- 【Python爬虫实战】微信爬虫
所谓微信爬虫,即自动获取微信的相关文章信息的一种爬虫.微信对我们的限制是很多的,所以我们需要采取一些手段解决这些限制主要包括伪装浏览器.使用代理IP等方式http://weixin.sogou.com ...
- Python爬虫实战四之抓取淘宝MM照片
原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...
随机推荐
- elasticsearch mysql logstash 同步 简单配置【环境centos7 elasticsearch 6.0 mysql 5.7 logstash 6.0】
插件:logstash-input-jdbc 安装插件logstash-input-jdbc 1.安装 gem yum install gem 2.替换国内的镜像 gem sources -- ...
- 利用curl 模拟多线程
所谓多线程就是多个 程序同时运行,单线程:执行一段逻辑,等待完成后 在执行另外一个. 多线程:几个逻辑同时进行处理,不需要相互等待,提高了总的执行时间 接下来就用curl实现多线程 实现逻辑 1. f ...
- JAVA开源B2C系统
前言 最近有人想面向境外销售商品,但是又不想依托于亚马逊这些平台,于是找我来帮忙想弄个B2C系统.因为刚开始只是打算试试水,也就不打算投入多少成本了.所以这边就考虑使用开源的B2C系统来直接使用了. ...
- 关于java分布式系统开关功能设计(服务升降级)
首先讲一下开关的由来,例如东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A.B.C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时 ...
- CentOS7切换到root用户和退回普通用户
切换成root用户: sudo su - 退出root用户并切换回普通用户: exit
- flume http source示例讲解
一.介绍 flume自带的Http Source可以通过Http Post接收事件. 场景:对于有些应用程序环境,它可能不能部署Flume SDK及其依赖项,或客户端代码倾向于通过HTTP而不是Flu ...
- InnoDB多版本(MVCC)实现简要分析(转载)
http://hedengcheng.com/?p=148 基本知识 假设对于多版本(MVCC)的基础知识,有所了解.InnoDB为了实现多版本的一致读,采用的是基于回滚段的协议. 行结构 InnoD ...
- go中的make和new的区别
适用范围:make 只能创建内建类型(slice map channel), new 则是可以对所有类型进行内存分配 返回值: new 返回指针, make 返回引用 填充值: new 填充零值, m ...
- IBM MQ 中 amqsput : command not found的解决办法
MQ操作队列的命令有如下三条:命令功能1.amqsput 将消息放入队列中, 程序把之后的每一行标准输入作为一条独立的消息,读到 EOF 或空行时退出.注意,UNIX 上的 EOF 为 Ctrl+ ...
- python中转义符&str格式化
转义字符: 1.将有意义的字符变的无意义 2.将无意义的字符变的有意义 语法: \ + 某个字符 \n, \r\n : 代表换行 \t : 代表一个缩进, (水平制表符) \r : ...