scrapy抓取淘宝女郎

准备工作

  • 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找了好久没有找到,这里如果有朋友知道怎样翻页的话,麻烦告诉我一声,谢谢了...,不过就这样坐以待毙了吗,所以就在chrome上搜,结果看到有人直接使用的这个网页,我当时一看感觉神奇的样子,这就是简化版的首页啊,只需要改变page的数字就可以实现遍历了,不过还是有点小失落,为什么人家就能找到呢,这个我还是希望知道的朋友能够分享一下,我也会查看相关的资料,把这个空缺不上的,好了,现在开我们的工作了
  • 我们的目的是抓取册以及相关的信息,所以我们需要随便打开一个淘女郎的相册页面,然后随便进入一个相册即可,很显然这里的相册是异步加载的,因此我们需要抓包,这里我抓到了含有相册的url以及相关信息的json数据,如下图:

  • 然后我们查看它的url为https://mm.taobao.com/album/json/get_album_photo_list.htmuser_id=687471686&album_id=10000702574&top_pic_id=0&cover=%2F%2Fimg.alicdn.com%2Fimgextra%2Fi2%2F687471686%2FTB1TlwDLFXXXXbxaXXXXXXXXXXX_!!2tstar.png&page=1&_ksTS=1494097545509_154&callback=jsonp15
  • 通过我尝试之后这条url可以简化为:
  • 其中user_id是每一个女郎对的id,ablum_id时每一个相册的id,这里一个女郎有多个相册,因此这个id是不同的,但是page就是要翻页的作用了,可以看到我去掉了callback=json155这一项,因为如果加上这一项,返回的数据就不是json类型的数据,其中page是在抓包的时候点击翻页才会在下面出现的,可以看到同一个相册返回的除了page不同之外,其他的都是相同的,因此这里通过page来实现翻页的数据
  • 上面分析了每一个相册的url数据的由来,可以看到我们下面需要找到user_id,ablum_id这两个数据.
  • user_id的获取:我们打开首页,然后打开chrome的调试工具,可以看到每一个 女郎的url中都包含user_id这一项,因此我们只需要通过这个实现翻页然后获取每一个女郎的url,之后用正则将user_id匹配出来即可,代码如下
ps=response.xpath('//p[@class="top"]')
for p in ps:
item=JrtItem()
href=p.xpath('a/@href').extract() #这个得到的是一个数组url
if href:
item['user_id']=self.pattern_user_id.findall(href[0])[0] #用则正匹配出user_id,其中的正则为 pattern_user_id=re.compile(r'user_id=(\d+)')
  • ablum_id的获取:想要获取ablum_id当然要在相册的页面查找,于是我们在相册页面抓包获得了如下图的页面

  • 通过上图我们清晰的知道每一个相册的里面包含多少相册,但最令人开心的是在这个页面中不是动态加载,因此我们可以查看它的源码,当我们查看源码的时候,我们可以看到和user_id一样,这里的ablum_id包含在了href中,因此我们只需要找到每一张相册的url,然后用正则匹配处来即可,其中这个页面的url简化为:
  • https://mm.taobao.com/self/album/open_album_list.htm?_charset=utf-8&user_id ={0}&page={1}
  • 所以我们可以通过上面得到的user_id构成请求即可,代码如下:
 ## 解析得到ablum_id,根据ablum_id解析请求出每一个相册的json数据
def parse_ablum_id(self,response):
if response.status==200:
print response.url
item = response.meta['item']
soup = BeautifulSoup(response.text, 'lxml')
divs = soup.find_all('div', class_='mm-photo-cell-middle')
for div in divs:
href = div.find('h4').find('a').get('href')
items = self.pattern_ablum_id.findall(href) #这里就得到了ablum_id
  • 上面已经获得了user_idablum_id,那么现在就可以请求每一个相册的json数据了,这个就不用多说了,详情请看源代码

MongoDB存储

安装方式

  • ubantu直接用sudo apt-get install安装即可
  • 安装对应python的包:pip install pymongo
  • 安装完成以后就可以连接了,下面贴出我的连接代码
from pymongo import MongoClient

class MongoDBPipelines(object):
collection_name = 'taobao'
def open_spider(self,spider):
self.client = MongoClient('localhost', 27017) #连接,这里的27017是默认的额端口号
self.db = self.client['python'] #python是自己的数据库,当然这里不用提前建好也可以 def close_spider(self, spider):
self.client.close() def process_item(self,item,spider):
self.db[self.collection_name].update({'picId':item['picId']}, {'$set': dict(item)}, True)
return item

现在这就算好了,当然这里还有很多东西需要优化的,像代理池。。。最后本人想在暑期找一个地方实习,但是一直没有好的地方,希望有实习的地方推荐的可以联系我,在这里先谢谢了

推荐

最后推荐博主的一些源码

scrapy抓取淘宝女郎的更多相关文章

  1. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

  2. 芝麻HTTP:Python爬虫实战之抓取淘宝MM照片

    本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...

  3. Selenium模拟浏览器抓取淘宝美食信息

    前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...

  4. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  5. python(27) 抓取淘宝买家秀

    selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...

  6. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  7. 使用CURL抓取淘宝页面

    /** * 根据地址抓取淘宝页面html代码 * @param type $url 地址 * @return boolean */ public function getTaoBaoHtml($url ...

  8. Python爬虫之一 PySpider 抓取淘宝MM的个人信息和图片

    ySpider 是一个非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇通过做一个PySpider 项目,来理解 Py ...

  9. selenium+PhantomJS 抓取淘宝搜索商品

    最近项目有些需求,抓取淘宝的搜索商品,抓取的品类还多.直接用selenium+PhantomJS 抓取淘宝搜索商品,快速完成. #-*- coding:utf-8 -*-__author__ =''i ...

随机推荐

  1. HTML+CSS--position大法好

    其实在HTML和CSS的学习中,css的position属性应该是难点之一,难在你需要静下心来仔细搞清楚它的每一个值的意义.效果和用法.但是它的功能很强大,效果也是很令人惊艳的,因为你可以用它去实现一 ...

  2. phtread_mutex 组合

    phtread_mutex通过mutexattr设定其类型,并保存在成员__kind中.pthread_mutex的锁操作函数根据__kind进行方法的分派(dispatch).__kind由5个字段 ...

  3. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  4. 关于cisco ccp 或sdm管理gns3中思科路由器的成功分享

    本来工作环境中有一台c1841,闲来无事,升级了最新的IOS=c1841-adventerprisek9-mz.151-4.M6.bin,在xp虚拟机中安装sdm(新windows系统不支持)和在wi ...

  5. ZooKeeper安装、部署

    一.简介       ZK的安装和配置十分简单,既可以配置成单机模式,也可以配置成集群模式,zk使用java编写的运行在java环境上,3个ZK服务进程是建议的最小进程数量,而且建议部署在不通的物理机 ...

  6. mybatis中传入一个List集合作为查询条件的参数

    如果有一个查询参数有多个,用一个List集合传进去,这个mapper文件可以这么写 <select id="queryList04" resultType="map ...

  7. VR市场爆炸-VR全景智慧城市

    随着VR的火爆,越来越多的企业开始关注这种高新技术,也有越来越多VR虚拟现实公司应运而生,但是VR虚拟现实公司真的那么好做吗?虽然VR虚拟现实拥有巨大的市场潜力,但是同时它也非常烧钱,如果VR虚拟现实 ...

  8. 写给Android App开发人员看的Android底层知识(3)

    (七)App启动流程第2篇 书接上文,App启动一共有七个阶段,上篇文章篇幅所限,我们只看了第一阶段,接下来讲剩余的六个阶段,仍然是拿斗鱼App举例子. 简单回顾一下第一阶段的流程,就是Launche ...

  9. UITextView 实现链接点击事件

    UILabel通过富文本可以实现图文混排,但是想要实现文字的点击效果好像不容易实现,这里有2种方法可以达到效果 YYLabel -->YYText框架 参考我之前的博客:http://www.c ...

  10. 企业账号打包如何通过HTML页面打开

    企业账号打包后 Plist文件加入前缀 href="itms-services://?action=download-manifest&url= Plist文件在服务器中的地址为:h ...