python3 动态网页爬虫
来源:互联网 发布:欧洲7日游要多少钱知乎 编辑:程序博客网 时间:2024/04/30 03:04
一个好朋友要爬个app排行网页,我就以一杯星巴克卖出去啦。
网页链接:http://qianfan.analysys.cn/view/rank/app.html
我们使用Python3,主要用到re,requests模块。
一般来说爬虫的流程是这样:先看网页源代码,再找到要爬的字段出现的区域,用正则表达式找到这个字段,再打印或者导出结果。
我们先看这个网页,需要爬的是排行、app和UV:
用python看下源代码(浏览器也可以,右键:查看网页源代码)
# -*- coding:utf-8 -*-import reimport urllib.requestwith urllib.request.urlopen('http://qianfan.analysys.cn/view/rank/app.html') as response: html = response.read().decode('utf-8')print(html)
看到搜索微信并没有内容,判断为动态网页。
因此,得先找到这个网页填充数据的源文件。
Chrome为例,F12找到Network,找一下传送方式为POST的数据页(表单数据)
有四个POST,感觉那个appTOPRank比较靠谱。
我们看看返回的数据,发现里面有许多app的信息:类别、介绍等。
很愉快的点开表头Headers找找它的url:
复制到浏览器里看看:
chrome直接为我们建了格式,发现这与排行榜是一致的。但是只有20个。
经过多次查找,发现这个是数量的要求,在data里,请求访问网站时需要加上这个datas:
datas={'pageSize':'1000'}
这个1000可以修改,你想抓几个就填几个。
接下来就是python实现爬虫(可以直接使用):
# -*- coding:utf-8 -*-import reimport requestsdatas={'pageSize':'1000'}html=requests.post('http://qianfan.analysys.cn/qianfan/appTop/appTopRank',data = datas).content.decode('utf-8') #用post的方式访问。网页解码成中文reg_rank=r'"rank":(.*?),"id"' #找到排名所在的代码区域,复制前后内容,把需要爬的内容替换为(.*?)reg_app = r'"appName":"(.*?)","isDisplay"' #app名称reg_UV=r'"activeNums":(.*?),"trend"' #活跃outcome_rank= re.findall(reg_rank, html) #利用正则模块找到需要的内容outcome_app = re.findall(reg_app , html)outcome_UV = re.findall(reg_UV, html)for i in range(0,len(outcome_rank)): #以排行数量为准 print (outcome_rank[i],outcome_app[i],outcome_UV[i]) #打印出结果,结果是个list,我们用for语句将里面的里面的内容一个一个输出。(这里就不追求格式了)
阅读全文
0 0
- python3 动态网页爬虫
- python3 爬虫日记(三) 爬取堆糖动态加载网页
- Python3网络爬虫:requests爬取动态网页内容
- python3.3网页图片爬虫
- python3爬虫--抓取网页信息
- Python3爬虫【壹】静态网页
- Python3+Scrapy实现网页爬虫
- python3爬虫(网页下载)
- 动态网页爬虫笔记
- python3 网络爬虫(二)利用get请求获取网页的动态加载数据
- python3 网络爬虫(三)利用post请求获取网页的动态加载数据
- Python3网络爬虫:Scrapy入门实战之爬取动态网页图片
- Python3伪装浏览器爬虫读取网页内容
- Python3.4网页爬虫,提取图片
- Python3 爬虫(一)-- 简单网页抓取
- Python3 爬虫(一)-- 简单网页抓取
- Python3.x爬虫下载网页图片
- python3 爬虫--网页图片爬取
- html学习
- MySql语句
- 52数学能力测评成绩报告查询通知
- [Leetcode] 447. Number of Boomerangs 解题报告
- AD调试小改(1)
- python3 动态网页爬虫
- 前端面试题4
- tinker热修复gradle接入
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- 如何选择移动端车牌识别产品
- [绍棠] iOS11和iPhone X的适配
- RemoteViews 中暗藏的坑
- 环境变量修改,是否即时更新?
- Nginx的安装与配置