scrapy抓取淘宝女郎
scrapy抓取淘宝女郎
准备工作
- 我们的目的是抓取册以及相关的信息,所以我们需要随便打开一个淘女郎的相册页面,然后随便进入一个相册即可,很显然这里的相册是异步加载的,因此我们需要抓包,这里我抓到了含有相册的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_id
和ablum_id
,那么现在就可以请求每一个相册的json
数据了,这个就不用多说了,详情请看源代码
MongoDB存储
安装方式
Windows
下安装请看我的MogoDB干货篇
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爬取妹子网站实现图片的存储,这个只是一个演示怎样存储图片的实例,因此不想过多的投入时间去爬,因此写的不是很详细
scrapy抓取淘宝女郎的更多相关文章
- 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)
Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...
- 芝麻HTTP:Python爬虫实战之抓取淘宝MM照片
本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...
- Selenium模拟浏览器抓取淘宝美食信息
前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...
- Python爬虫实战四之抓取淘宝MM照片
原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...
- python(27) 抓取淘宝买家秀
selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...
- Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...
- 使用CURL抓取淘宝页面
/** * 根据地址抓取淘宝页面html代码 * @param type $url 地址 * @return boolean */ public function getTaoBaoHtml($url ...
- Python爬虫之一 PySpider 抓取淘宝MM的个人信息和图片
ySpider 是一个非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇通过做一个PySpider 项目,来理解 Py ...
- selenium+PhantomJS 抓取淘宝搜索商品
最近项目有些需求,抓取淘宝的搜索商品,抓取的品类还多.直接用selenium+PhantomJS 抓取淘宝搜索商品,快速完成. #-*- coding:utf-8 -*-__author__ =''i ...
随机推荐
- 阿里云CentOS-7.2安装mysql
我下载的阿里云的服务器系统centos7.2是纯内核版本,并没有其他的工具,所以这个系统是非常干净的.所以我就需要给系统安装一一些工具,来方便系统的管理与操作,我们上面讲到了关于服务器的yum的配置在 ...
- 【MySql】——MHA+GTID+failover+binlog-server+Atlas
一.环境准备 1.mysql-db01 #系统版本 [root@mysql-db01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) #内 ...
- Hush Framework框架配置
在写这篇文章的时候,楼主已经饿的不行了,因为我从3点开始就在折腾Hush Framework,走了很多弯路,打铁要趁热,先把基本的过程记录下来,留待以后翻阅,同时记录其中容易走弯路的地方,特别是对于一 ...
- 一句话告诉你JQuery $(this)到底指的是什么,怎么用
看了网上好多关于jquery $(this)的解释,感觉都说的很模糊. 下面说出我自己的理解. this表示的是当前对象,下面以例子来说明 <!DOCTYPE html> <html ...
- OC中Foundation框架
框架的概念 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的组合,以便使研发程序变的更容易在OS X下地Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架 ...
- JavaScript异步编程
前言 如果你有志于成为一个优秀的前端工程师,或是想要深入学习JavaScript,异步编程是必不可少的一个知识点,这也是区分初级,中级或高级前端的依据之一.如果你对异步编程没有太清晰的概念,那么我建议 ...
- ListView控件详解
ListView是个较为复杂的控件 1.定义 把它拽进来,系统会自动在Designer.cs里添加一个 this.listView1 = new System.Windows.Forms.Lis ...
- centos下搭建redis集群
必备的工具: redis-3.0.0.tar redis-3.0.0.gem (ruby和redis接口) 分析: 首先,集群数需要基数,这里搭建一个简单的redis集群(6个redis实 ...
- php学习之string
1. php str_replace函数: str_replace() 函数使用一个字符串替换字符串中的另一些字符. str_replace(find,replace,string,count) fi ...
- JS中this到底指向谁?
关于this的指向,是一个令人很头疼的问题.但是,你运气好,碰到了我.老夫这儿有本祖传秘籍,看懂这个,妈妈再也不用担心你的this指向不对啦! 归根结底,this指向就一句话:谁最终调用函数,this ...