最近在学Python的爬虫,顺便就练习了一下爬取淘宝上的淘女郎信息:手法简单,由于淘宝网站本上做了很多的防爬措施,应此效果不太好!

爬虫的入口:https://mm.taobao.com/json/request_top_list.htm?type=0&page=0

本人代码如下:请各位高人多指教,请留言,不胜感激!!

#_*_coding:utf-8_*_
import unicodedata
import urllib.request
import re
import os
root_url="https://mm.taobao.com/json/request_top_list.htm?type=0&page=" def HexStr2Unicode(Hex_Str):
Unicde_Str = ""
for i in range(0,len(Hex_Str)//4):
chr(int(Hex_Str[i*4:i*4+4], 16))
Unicde_Str += chr(int(Hex_Str[i*4:i*4+4], 16))
return Unicde_Str
def getSiteSet(url):
'''根据传入的roo_url获取到每个淘女郎的个人网址,以及每个淘女郎的名字'''
page=urllib.request.urlopen(url)
cont=page.read()
cont=cont.decode(encoding="gbk")#很关键,原网页淘宝的是gbk编码
# print(cont)
pattern1=r'href=".{1,35}\.htm" target='#匹配个人网址的正则表达式
pattern2=r'class="lady-name" href=".{1,100}<\/a>'#匹配个人名字的表达式
# print(cont)
SiteSet={}
i=1
try:
while len(cont)>5:
matchObj=re.search(pattern1,cont,re.M).group()
nameObj=re.search(pattern2,cont,re.M).group()
# print("------->",matchObj)
if matchObj:
site='https:'+(matchObj[6:-9])
id1=nameObj.find(">")
id2=nameObj.find("<")
# print(name)
name=nameObj[id1+1:id2]
# print("网站地址%d: "%i,site)
# print("淘女郎名字:",name)
SiteSet[name]=site
index=cont.find(nameObj)
i+=1
else:
print("没有匹配上") cont=cont[index+2:]
except:
# import traceback
# traceback.print_exc()
print("*********Match error****************")
return SiteSet # SiteSet=getSiteSet("https://mm.taobao.com/json/request_top_list.htm?type=0&page=0") def getImgSet(site_url):
'''根据某个具体的网址,获取该网址中所有图片的路径'''
page=urllib.request.urlopen(site_url)
cont=page.read().decode("gbk").encode("utf-8")
cont=str(cont,encoding="utf-8")
pattern=r'src=\"\/\/.{0,150}(.jpg|.png)\"'
ImgSet=[]
index=0
i=1
try:
while len(cont)>100: matchObj=re.search(pattern,cont,re.M).group()
# print("------->",matchObj)
if matchObj:
img='https:'+(matchObj[5:-1])
# print("图片地址%d: "%i,img)
ImgSet.append(img)
index=cont.find(matchObj)
i+=1
else:
print("没有匹配上") cont=cont[index+len(matchObj[5:-1]):]
except:
print("-----------------------") return ImgSet # ImgSet=getImgSet("https://mm.taobao.com/434479822.htm")
# ImgSet=set(list(ImgSet))#集合元素去重 def getIconSet(url):
'''根据roo_url,获取每个淘女郎的头像icon图片'''
page=urllib.request.urlopen(url)
cont=page.read()
cont=str(cont)
head="<img src="
tail=".jpg"
k=1
IconSet=[]
while k!=0:
id1=cont.find(head)
id2=cont.find(tail,id1)
if id1==-1 or id2==-1:
k=0
break
else:
icon="https:"+cont[id1+len(head)+1:id2+len(tail)]
cont=cont[id2:]
IconSet.append(icon)
print(icon)
return IconSet
#我们可以使用自己定义的auto_down()来代替python的urllib.urlretrieve()函数,实现我们自动重新下载的目标。
# tips:新下载的文件会覆盖原来下载不完全的文件。
def auto_down(url,filename):
'''使用自定义的方法进行下载文件,如果下载失败,还可以继续下载覆盖原来的文件'''
try:
# 添加头部信息,模仿浏览器,但是淘宝对于爬虫的爬取,做了很多防爬的措施,因此,及时添加了header头部信息,效果也并不好
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=url, headers=headers)
urllib.request.urlretrieve(url,filename)
except urllib.request.ContentTooShortError:
print('Network conditions is not good.Reloading.')
auto_down(url,filename) # urllib.request.urlopen(req).read()
base =r"C:\Users\wujian\Desktop\python学习\TaobaoGirlImg\\"
for i in range(1,6):
url=root_url+str(i)
SiteSet=getSiteSet(url)
for site in SiteSet.keys():
i=1
filename=base+site
os.mkdir(filename)# 创建文件夹
print(filename)
ImgSet=getImgSet(SiteSet[site])
ImgSet=set(list(ImgSet))
for imgurl in ImgSet:
# print(imgurl)
file_name=filename+"\\"+str(i)+".jpg"
auto_down(imgurl,file_name)
i+=1

爬虫--爬取淘宝信息

简单的python爬虫--爬取Taobao淘女郎信息的更多相关文章

  1. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

  2. Python爬虫-爬取京东商品信息-按给定关键词

    目的:按给定关键词爬取京东商品信息,并保存至mongodb. 字段:title.url.store.store_url.item_id.price.comments_count.comments 工具 ...

  3. python爬虫爬取汽车页面信息,并附带分析(静态爬虫)

    环境: windows,python3.4 参考链接: https://blog.csdn.net/weixin_36604953/article/details/78156605 代码:(亲测可以运 ...

  4. python爬虫爬取全球机场信息

    --2013年10月10日23:54:43 今天需要获取机场信息,发现一个网站有数据,用爬虫趴下来了所有数据: 目标网址:http://www.feeyo.com/airport_code.asp?p ...

  5. python爬虫抓取哈尔滨天气信息(静态爬虫)

    python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...

  6. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  7. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  8. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  9. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

随机推荐

  1. shell之“>/dev/null 2>&1” 详解

    shell中可能经常能看到:>/dev/null  2>&1 命令的结果可以通过 %> 的形式来定义输出,其中 %> 代表文件描述符 我们将这个命令组合:"& ...

  2. h5页面ios,双击向上滑动,拖拽到底部还能继续拖拽(露出黑色背景)

    h5页面ios,双击向上滑动,拖拽到底部还能继续拖拽 标签: 手机 2016-02-02 18:09 696人阅读 评论(0) 收藏 举报   在ios下,双击屏幕某些地方,滚动条会自动向上走一段. ...

  3. 使用idea开发工具,nginx服务部署Extjs6,SpringBoot项目到服务器

    编译ExtJs文件 1.输入命令 2.开始编译 3.找到编译后的文件 E:\idea_project\BaiSheng_Model\fin-ui\build\production\Admin 4.将文 ...

  4. jmeter(1)——环境部署及安装

    公司人事还有老大都找我谈了一下2019的目标和技能成长规划,所以整体想了一下,技能方面,自己今年准备从性能测试开始着手,也去咨询了一下大神,切入点最好是工具.性能测试是一门非常庞大的课程,最初级,最入 ...

  5. Mybatisplus分页插件的使用

    一.加依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus ...

  6. Javascript屏蔽鼠标的右键的两种方法。

    方法一:利用鼠标button的键值 <script language="javascript"> function blockright(oEvent) { var o ...

  7. Node.js学习笔记(六) --- Nodejs 的非阻塞 I/O、 异步、 事件驱动

    1. Nodejs 的单线程 非阻塞 I/O 事件驱动在 Java. PHP 或者.net 等服务器端语言中,会为每一个客户端连接创建一个新的线程.而每个线程需要耗费大约 2MB 内存.也就是说,理论 ...

  8. MDI-设置子窗体只能弹出一个--单例模式

    不足之处,欢迎指正! 什么是MDI..我表示不知道的呢. MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Wi ...

  9. encodeURI和 encodeURIComponent 的作用及应用

    首先解释下 encodeURIComponent 的作用:将文本字符串编码为一个有效的统一资源标识符 (URI).为什么要用这个是因为我想把 username 整个当做参数传递给 CGI, 而不让 C ...

  10. Node.js开发——MongoDB与Mongoose

    为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改 ...