最近在学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=1try: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]=siteindex=cont.find(nameObj)i+=1else: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=0i=1try: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+=1else: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=1IconSet=[]while k!=0:id1=cont.find(head)id2=cont.find(tail,id1)if id1==-1 or id2==-1:k=0breakelse: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=1filename=base+siteos.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爬虫,爬取知乎

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

  2. 深圳python爬虫培训南山科技园钽电容回收_记一次python 爬虫爬取深圳租房信息的过程及遇到的问题...

    为了分析深圳市所有长租.短租公寓的信息,爬取了某租房公寓网站上深圳区域所有在租公寓信息,以下记录了爬取过程以及爬取过程中遇到的问题: 爬取代码: import requests from reques ...

  3. python解决租房问题_记一次python 爬虫爬取深圳租房信息的过程及遇到的问题

    为了分析深圳市所有长租.短租公寓的信息,爬取了某租房公寓网站上深圳区域所有在租公寓信息,以下记录了爬取过程以及爬取过程中遇到的问题: 爬取代码: import requests from reques ...

  4. python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  5. python爬虫爬取豆瓣电影信息城市_python爬虫,爬取豆瓣电影信息

    hhhhh开心,搞了一整天,查了不少python基础资料,终于完成了第一个最简单的爬虫:爬取了豆瓣top250电影的名字.评分.评分人数以及短评. 代码实现如下:#第一个最简单的爬虫 #爬取了豆瓣to ...

  6. 高温来袭?通过python爬虫爬取天气预警信息

    需求分析 最近一段时间,天气也是越来越热了,真正的进入了夏天了.可怕的故事是,现在才只有6月份呢,要是等到了7,8月份,不会是要更热吧? 一个小伙伴对此也深表赞同,"仙草哥哥,现在天气的温度 ...

  7. Python爬虫-爬取豆瓣出版社信息

    爬取豆瓣出版社信息 代码如下: # 爬取豆瓣出版社 import urllib.request import reurl = 'https://read.douban.com/provider/all ...

  8. 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐

    简单的爬虫入门实战 最近刚学了python的爬虫,刚好可以用来爬取漂亮的图片作为壁纸,网上美图网站有很多,比如:花瓣,堆糖.它们请求图片数据的方式差不多类似,都是通过用户不断下滑加载新的图片,这种请求 ...

  9. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

最新文章

  1. 如何删除一个CSDN上自己上传的资源
  2. 原来你是这样子的OpenAI!来看看它背后那些有趣的人和事
  3. Github | 标星9W+如何准备谷歌面试?
  4. ResultSetMetaData和ResultSet
  5. 2015手机病毒暴涨16倍 每天70万人次连接风险WiFi
  6. 字符串分割函数strtok_r的用法
  7. fetch移动端浏览器兼容问题
  8. 田逸:坎坷IT路 从机修工到系统管理高手『英雄故事』
  9. php++redius,【答疑】请问edius音波显示快捷键是什么呢?怎么使用的呢? - 羽兔网问答...
  10. 对抗神经网络 (GAN) 的深入了解
  11. 邮箱服务器退回,126邮箱群发邮件被对方服务器退回
  12. 启发函数 (Heuristic Function) —Octile
  13. vue中请求拦截器梧桐刷新Token
  14. python面向对象编程
  15. 店宝宝:第一时间发布!网店店主必看
  16. 八十八枚红手印背后的故事
  17. php中empty和isset的用法
  18. 第99篇 C++数据结构(九)散列表
  19. 短信验证码登录的实现流程
  20. INTELLJ IDEA打包war包报错处理

热门文章

  1. Python编程之围圈报数
  2. 逆水寒7.25服务器维护,逆水寒7月4日更新维护公告 角色交易功能上线
  3. Android8-Settings-BlueTooth
  4. 懂你的心 愿您的笑颜永在阳光下挥洒
  5. 什么是局域网监控?是如何监控的...
  6. 使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记
  7. FusionAccess桌面云
  8. [ 认知心理学 ] 帮我家呆瓜整理的《认知心理学》资料,麻了 --- 考研复习 --- 期末复习
  9. 给大家推荐几本JAVA相关书籍
  10. chrome浏览器安装infinity插件