阿狸V任务页面爬取数据解析
需求:
爬取:https://v.taobao.com/v/content/video 所有主播详情页信息
首页分析
分析可以得知数据是通过ajax请求获取的.
分析请求头
详情页分析
详情页和详情页数据url对比分析
经过测试,发现我们只需要更改'''userid'''的值就可以获取到不同的数据.
分析完毕开始编写代码
完整代码如下
import re import requests import json import jsonpath import pymongo class VtaoSpider:headers={'referer': 'https://v.taobao.com/v/content/video','user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36',}db=Nonedef open(self):'连接数据库'client=pymongo.MongoClient(host='106.12.108.236',port=27017)self.db=client['trip']def get_first_page(self):'获取首页所有的数据'url_lst=[]for i in range(1,26): #25页数据'处理页面'params={'cateType': 602,'currentPage': i,'_ksTS': '1554971959356_87','':'','_output_charset': 'UTF-8','_input_charset': 'UTF-8',}start_url='https://v.taobao.com/micromission/req/selectCreatorV3.do'first_data=requests.get(url=start_url,headers=self.headers,params=params)url_lst.append(first_data)# print(first_data.text)return url_lstdef get_detail_url(self):'获取详情页的url'response_list=self.get_first_page()all_detail_url=[]for response in response_list:dd = response.textd_dict = json.loads(dd)detail_url = jsonpath.jsonpath(d_dict, '$..homeUrl')#detail_url是一个列表 all_detail_url.extend(detail_url)# print(all_detail_url)return all_detail_urldef get_detail_data(self):url_list=self.get_detail_url()# print(url_list)for url in url_list:try:ex='userId=(.*?)&'user_id=re.findall(ex,url)[0]detail_data_url=f'https://v.taobao.com/micromission/daren/daren_main_portalv3.do?userId={user_id}&_ksTS=1554976401436_17'# print(detail_data_url)#获取响应数据data = requests.get(url=detail_data_url, headers=self.headers).textdata_json=json.loads(data)darenNick=jsonpath.jsonpath(data_json,'$..darenNick')[0]darenScore=jsonpath.jsonpath(data_json,'$..darenScore')[0]nick=jsonpath.jsonpath(data_json,'$..nick')[0]creatorType=jsonpath.jsonpath(data_json,'$..creatorType')[0]rank=jsonpath.jsonpath(data_json,'$..rank')res_data={'darenNick':darenNick,'darenScore':darenScore,'nick':nick,'creatorType':creatorType,'rank':rank,}#存入数据库if self.db['vtaobao'].insert(res_data):print('save to mongo is successful!')except Exception as e:print(e)if __name__ == '__main__':vspider=VtaoSpider()#数据库启动只需要执行一次 vspider.open()vspider.get_detail_data()
一共爬取了450条数据,就是450个主播的相关信息!!!
此代码为使用多进程,多线程,爬取时间不能如你们所愿,感兴趣的朋友可以把代码重构一下,使用多进程,多线程,再分享一波,让大家学习一番,谢谢!!!
转载于:https://www.cnblogs.com/angle6-liu/p/10692501.html
阿狸V任务页面爬取数据解析相关推荐
- 图片爬取数据解析数据持久化
文章目录 1.图片下载 2.JS动态渲染 3.数据解析 4.持久化存储 1.图片下载 百度图片:http://image.baidu.com/ 搜狗图片:https://pic.sogou.com/ ...
- scrapy实现二级页面爬取(以小说为例)
1.scrapy图解 2.创建项目 scrapy startproject 项目名 创建后的目录 3.编写字段 在items.py中编写需要的字段,这里就写小说的章节和内容 class Xiaoshu ...
- 谷歌插件webscraper使用问疑难杂症(插件页面跑到右边+爬取内容乱序+自定义选择多个列表+滚动抓取社交发帖+select鼠标无法选中元素+无法识别表格+插件支持范围+爬取数据与原始顺序不一致+)
博客目录 谷歌插件webscraper使用问疑难杂症解决 1.插件打开后跑到了右边 2.爬取内容乱序 3.mac的支持这个插件吗 4.除了谷歌外,火狐.IE.360等浏览器支持吗 5.自定义选择多个列 ...
- python爬取行业数据_用Python进行Web爬取数据
介绍 我们拥有的数据太少,无法建立机器学习模型.我们需要更多数据! 如果这句话听起来很熟悉,那么你并不孤单!希望获得更多数据来训练我们的机器学习模型是一个一直困扰人们的问题.我们无法在数据科学项目中获 ...
- python爬取所有数据_入门用Python进行Web爬取数据:为数据科学项目提取数据的有效方法...
作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 总览 Web抓取是一种从网站提取数据的高效方法(取决于网站的规定) 了解如何使用流行的BeautifulSoup ...
- 唐诗页面爬取 --- 预研阶段
页面爬取阶段 (1)获取列表页 (2)获取详情页 获取到每一首唐诗的详情页 根据其html文件的标签属性等,筛选出我们需要的东西,如 题目.朝代.作者.正文等-- 插入数据库阶段: 拿到我们需要的东西 ...
- 如何用python爬取数据_入门用Python进行Web爬取数据:为数据科学项目提取数据的有效方法...
作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 总览 Web抓取是一种从网站提取数据的高效方法(取决于网站的规定) 了解如何使用流行的BeautifulSoup ...
- android jsoup 课程表,使用jsoup爬取数据实现android课程表
说明:只是爬虫的一个实现案例,所以没有多做功能,只做了登录跟课表功能,课表有修改周次,单击课程显示课程详细信息等功能. 开发平台:Android Studio 界面 使用TimetableView a ...
- 菜鸟Python实战-03爬虫之爬取数据
最近想学习一下爬虫 所以参考了一下网上的代码,并加以理解和整理,好记性不如烂笔头吧. 以下代码的目标网站是豆瓣电影:https://movie.douban.com/top250?start=%22( ...
最新文章
- 算法(第4版)Algorithms, Fourth Edition
- java stringbu,Java String和StringBuilder常用方法,
- PTA团体程序设计天梯赛篇(四)----几何+算法专题
- jmeter测试udp收发数据
- SAP Spartacus 的 git flow 和发布流程
- Web Service简介
- Linux: shell 中命令代换 $() 和 ``(有图有代码有真相!!!)
- 2017年度IT168技术卓越奖名单:服务器类
- 深度学习系列--1.入坑模型: 线性回归,logistic 回归,softmax分类器
- python读取超大csv
- 管理感悟:没有活跃用户量,谈广告都是开玩笑
- mysql connector/c++ 存储过程的调用_MySQL Connector C++ 调用存储过程
- 现代信号处理——参数估计理论(估计量的性能)
- hcie lab 实验挂了怎么办?
- 产品管理:四步法新产品开发流程
- vs未能加载项目文件。未能找到路径 c#笔记5
- 边境的悍匪—机器学习实战:第十五章 使用CNN和RNN处理序列
- python股票查询可视化代码
- 计算机视觉论文-2021-06-24
- 做柜员还是程序员_放弃月薪2万的程序员,被爸妈喊回家干公务员,看到工资悔不当初...