摘要:抓取淘宝女郎准备工作首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的不过这操蛋的地方就是这里的翻页是使用加载的,这个就有点尴尬了,找了好久没有找到,这里如果有朋友知道怎样翻页的话,麻烦告诉我一声,谢谢了,不过就这样坐
scrapy抓取淘宝女郎 准备工作
首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找了好久没有找到,这里如果有朋友知道怎样翻页的话,麻烦告诉我一声,谢谢了...,不过就这样坐以待毙了吗,所以就在chrome上搜,结果看到有人直接使用的这个网页,我当时一看感觉神奇的样子,这就是简化版的首页啊,只需要改变page的数字就可以实现遍历了,不过还是有点小失落,为什么人家就能找到呢,这个我还是希望知道的朋友能够分享一下,我也会查看相关的资料,把这个空缺不上的,好了,现在开我们的工作了
我们的目的是抓取册以及相关的信息,所以我们需要随便打开一个淘女郎的相册页面,然后随便进入一个相册即可,很显然这里的相册是异步加载的,因此我们需要抓包,这里我抓到了含有相册的url以及相关信息的json数据,如下图:
然后我们查看它的url为https://mm.taobao.com/album/j...
通过我尝试之后这条url可以简化为:
https://mm.taobao.com/album/j...{0}&album_id={1}&top_pic_id=0&page={2}&_ksTS=1493654931946_405
其中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/al...{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
MongoDB存储 安装方式上面已经获得了user_id和ablum_id,那么现在就可以请求每一个相册的json数据了,这个就不用多说了,详情请看源代码
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爬取知乎用户的详细信息
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44340.html
摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...
摘要:今天为大家整理了个爬虫项目。地址新浪微博爬虫主要爬取新浪微博用户的个人信息微博信息粉丝和关注。代码获取新浪微博进行登录,可通过多账号登录来防止新浪的反扒。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天为大家整...
摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
阅读 1659·2021-09-28 09:35
阅读 1131·2019-08-30 15:54
阅读 1656·2019-08-30 15:44
阅读 3363·2019-08-30 14:09
阅读 488·2019-08-29 14:05
阅读 2661·2019-08-28 17:53
阅读 1978·2019-08-26 13:41
阅读 1710·2019-08-26 13:26