相关库的使用教程:关于requests库的使用参见Requests官方文档。

re正则的使用教程 。

记一次app爬取,下载全站所有的游戏的安装包(仅仅做学习之用):

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。像把大象放进冰箱一样的简单,获取html,解析自己想要的数据或者链接,一般使用requests库来请求html,采用正则或者BeautifulSoup提取数据或者链接;html通过浏览器解析,便得到了普通用户眼中的网页了,其实还有css和javascript,这里就不做过多的介绍了,一个网站的爬取,重要的就是会分析原网站,分析url的规律,方便构造url去请求html。

一.网页分析

1.首页的url:首页

2.尾页网页url:尾页

选择这个请求,右键新建便签打开我们发现这是一个json文件。

我们要找的apk链接就在里面,单击一下url就知道啦, 其中1081是个可疑的参数的如下图!,复制它,右键查看网页源代码,Ctrl+F查找,输入1081看到了吧

二.分析完网站的规律,开始写代码吧。

for i in range(1,76):

url = 'http://ng.d.cn/channel/list_0_0_0_0_0_0_{}_0.html?sort=0&searchByEs=1&keyword='.format(i)

print(url)

1.使用requests库请求html

# 请求html

html = requests.get(url).text

# 正则匹配出图片地址和apk的id

imgs = re.findall('data-original="(.*)" alt=',html)

apk_ids = re.findall('channelId="(\d+)"',html)

for (img,id) in zip(imgs,apk_ids):

# 把获取到的图片地址和apk的参数传递给下面的函数

get_apk(id,img)

2.注意:python函数的调用你可以在这里找到教程

3.获取apk下载链接的json处理

# 构造url

apk_url = 'http://ng.d.cn/game/showDownLoad.html?timestamp=1520830921562&channelid={}&osid=[3%2C4]'.format(id)

# 请求json,这里注意是.json()

apk_html = requests.get(apk_url).json()

print(apk_html)

# 打印出来看看

apk_js = apk_html['gamePkgMap']['安卓'][0]

print(apk_js)

name = apk_js['channelName']

url = apk_js['url']

print(name,img,url)

4.这里就不下载这个文件了,如果你想下载,在这部分接上这些代码就可以了

name = apk_js['channelName']

apk_url = apk_js['url']

apk_name = name+'.apk'

apk_content = requests.get(apk_url)

with open(apk_name,'wb') as f:

f.write(apk_content.content)

三.教程全部代码

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# 注意:里面涉及json的处理,看不出来就打印出来看看就懂了

import requests

import re

def get_apk_id():

for i in range(1,76):

url = 'http://ng.d.cn/channel/list_0_0_0_0_0_0_{}_0.html?sort=0&searchByEs=1&keyword='.format(i)

html = requests.get(url).text

imgs = re.findall('data-original="(.*)" alt=',html)

apk_ids = re.findall('channelId="(\d+)"',html)

for (img,id) in zip(imgs,apk_ids):

get_apk(id,img)

def get_apk(id,img):

apk_url = 'http://ng.d.cn/game/showDownLoad.html?timestamp=1520830921562&channelid={}&osid=[3%2C4]'.format(id)

apk_html = requests.get(apk_url).json()

apk_js = apk_html['gamePkgMap']['安卓'][0]

name = apk_js['channelName']

apk_url = apk_js['url']

print(name,img,apk_url)

if __name__ == '__main__':

get_apk_id()

感谢阅读 完!

python爬虫动态加载_简单Python爬虫,动态加载问题相关推荐

  1. python的代码有哪些_简单python代码类型有哪些?

    简单python代码类型有哪些? 简单python代码类型有: 1.[背景] 最近,派大星想要减肥,他决定控制自己的饮食,少吃一点蟹黄堡. 海绵宝宝为了帮助好朋友派大星,和派大星一起制定了一个饮食游戏 ...

  2. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  3. 如何给python爬虫加界面_给Python爬虫做一个界面.上

    做爬虫做了那么久,开始逐渐不满足写好程序,每次只能完成一件事情.开始思考如何可以做一个简单界面交互,再增加爬虫的可操作室,做交互界面有两个思路: 用Django做一个web界面: 用PyQt做一个ex ...

  4. python爬取网页文字和图片_简单的爬虫:爬取网站内容正文与图片

    我们来写个简单的爬虫#### 需要用到的模块 需要用到python的urllib和lxml模块,urllib为python的自带模块,lxml需要自行安装:pip install lxml 简单介绍u ...

  5. python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...

    豆瓣Python大牛写的爬虫学习路线图,分享给大家! 今天给大家带来我的Python爬虫路线图,仅供大家参考! 第一步,学会自己安装python.库和你的编辑器并设置好它 我们学习python的最终目 ...

  6. python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用

    我们中公优就业的老师希望能给那些面临困境的朋友们带来一点帮助!(相关阅读推荐:Python学习就看这里!) 爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具.爬虫的最基本就 ...

  7. python实现矢量分级渲染_用 Python 撸一个 Web 服务器-第4章:动态渲染数据

    上一章中为了尽快让 Todo List 程序跑起来,并没有完全按照 MVC 模式编写程序.这一章就让我们一起实现一个完整的 MVC 模式 Todo List 程序首页. 使用模型操作数据 我们来分析下 ...

  8. python websocket库有什么_常用Python爬虫与Web开发库有哪些?

    Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python库,以下是常用的Python爬虫与Web开发库. **1.爬虫库** bea ...

  9. python爬取qq电话_用Python爬取整个学院MM的电话和QQ,爬虫这也太牛了!

    文章末尾有python全套学习资料领取 1. python爬虫可以爬取大规模数据.Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在 ...

  10. 基于python爬虫技术的应用_基于Python爬虫技术的应用

    办公自动化杂志 一.引言 本文主要是对 Python 爬虫技术进行阐述,基于 python 的爬虫与其他语言相比的有很多优势.通过爬去某个网站的所有新闻这个案例,来进一步阐释 Python 爬虫技术的 ...

最新文章

  1. 序列化/反序列化,我忍你很久了,淦!
  2. 《开源安全运维平台OSSIM最佳实践》实验环境下载
  3. 马化腾首谈腾讯开源时,鹅厂已在Github上放出82个项目,标星24万+ | 附AI项目链接...
  4. mysql5.1编译安装centos7_CentOS7下 Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装
  5. QT的QSslSocket类的使用
  6. Java不要放弃之路
  7. linux模拟题,Linux操作系统模拟题.doc
  8. call线程起名字_Java线程的5个使用技巧
  9. python经济_python生成器——懒到欠揍,但很经济
  10. 驱动GPIO操作归纳
  11. 杭电1420 Prepared for New Acmer
  12. 光栅衍射主极大个数_基于达曼光栅的双目视觉系统
  13. lduan server 2012 RMS 群集安装 上(十四)
  14. 工资条EXCEL短信怎么发送?
  15. 版权:大众保险被判向微软赔偿217万元
  16. python多维列表索引越界怎么处理_python列表索引越界
  17. 高拍仪是否支持TWAIN方式的测试方法
  18. Kinetics-400数据集分类名中英文对照汇总
  19. 无法初始化windows sockets
  20. linux wa%过高,iostat查看io状况

热门文章

  1. (转载)Druid创始人Eric Tschetter详解开源实时大数据分析系统Druid
  2. Android NavigationView中设置menu中的item字体颜色
  3. vue2.x 父组件监听子组件事件并传回信息
  4. 一个人磊个小山包,与大家磊同一个小山包
  5. 【jenkins 异常】org.eclipse.jgit.errors.InvalidObjectIdException: Invalid id xxxxx
  6. Maven搭建Spring+Struts2+Hibernate项目详解
  7. nrf52832-定时器例程
  8. 智能语音推动双11进化:抢红包从动手到张嘴
  9. Java运算符和类型转换
  10. nginx 内置变量大全