分享好友 最新动态首页 最新动态分类 切换频道
python爬虫app下载_Python爬虫之抓取APP下载链接
2024-12-25 11:56

前言

python爬虫app下载_Python爬虫之抓取APP下载链接

最近有个需求是批量下载安卓APP。显然,刀耕火种用手点是不科学的。于是尝试用Python写了一个半自动化的脚本。所谓半自动化,就是把下载链接批量抓取下来,然后一起贴到迅雷里进行下载,这样可以快速批量下载。

准备工作Python 2.7.11:下载python

Pycharm:下载Pycharm

其中python2和python3目前同步发行,我这里使用的是python2作为环境。Pycharm是一款比较高效的Python IDE,但是需要付费。

基本思路首先我们的目标网站:安卓市场

点击【应用】,进入我们的关键页面

安卓市场.png跳转到应用界面后我们需要关注三个地方,下图红色方框标出

应用页面.png

首先关注地址栏的URL,再关注免费下载按钮,然后关注底端的翻页选项。点击“免费下载”按钮就会立即下载相应的APP,所以我们的思路就是拿到这个点击下载的连接,就可以直接下载APP了。

编写爬虫第一个需要解决的点:我们怎么拿到上面说的下载链接?这里不得不介绍下浏览器展示网页的基本原理。说简单点,浏览器是一个类似解析器的工具,它得到HTML等代码的时候会按照相应的规则解析渲染,从而我们能够看到页面。

这里我使用的是谷歌浏览器,对着页面右键,点击“检查”,可以看到网页原本的HTML代码

HTML代码.png看到眼花缭乱的HTML代码不用着急,谷歌浏览器的审查元素有一个好用的小功能,可以帮我们定位页面控件对应的HTML代码位置

定位HTML代码.png

如上图所示,点击上方矩形框中的小箭头,点击页面对应的位置,在右边的HTML代码中就会自动定位并高亮。接下来我们定位到下载按钮对应的HTML代码

下载按钮对应HTML.png

首先使用python拿到整个页面的HTML,很简单,使用“requests.get(url)”,url填入相应网址即可。

requestHTML.png接着,在抓取页面关键信息的时候,采取“先抓大、再抓小”的思路。可以看到一个页面有10个APP,在HTML代码中对应10个item

list_item.png

而每个 li 标签中,又包含各自APP的各个属性(名称、下载链接等)。所以第一步,我们将这10个 li 标签提取出来:def geteveryapp(self,source):

everyapp = re.findall('(

)',source,re.S)        #everyapp2 = re.findall('(
.*?
)',everyapp,re.S)

return everyapp```

这里用到了简单的正则表达式知识,这里提供一个链接:[正则表达式入门](http://www.oschina.net/question/12_9507)

* 提取 li 标签中的下载链接

```codedef getinfo(self,eachclass):

info = {}

str1 = str(re.search('', eachclass).group(0))

app_url = re.search('"(.*?)"', str1).group(1)

appdown_url = app_url.replace('appinfo', 'appdown')

info['app_url'] = appdown_url

print appdown_url        return info接下来需要说的难点是翻页,点击下方的翻页按钮后我们可以看到地址栏发生了如下变化

原始URL.png

带ID的URL.png

豁然开朗,我们可以在每次的请求中替换URL中对应的id值实现翻页。def changepage(self,url,total_page):

now_page = int(re.search('pi=(d)', url).group(1))

page_group = []        for i in range(now_page,total_page+1):

link = re.sub('pi=d','pi=%s'%i,url,re.S)

page_group.append(link)        return page_group

爬虫效果关键位置说完了,我们先看下最后爬虫的效果

爬取结果.png

在TXT文件中保存结果如下

最终结果.png

直接复制进迅雷就可以批量高速下载了。

附上全部代码#-*_coding:utf8-*-import requestsimport reimport sys

reload(sys)

sys.setdefaultencoding("utf-8")class spider(object):

def __init__(self):

print u'开始爬取内容'

def getsource(self,url):

html = requests.get(url)        return html.text    def changepage(self,url,total_page):

now_page = int(re.search('pi=(d)', url).group(1))

page_group = []        for i in range(now_page,total_page+1):

link = re.sub('pi=d','pi=%s'%i,url,re.S)

page_group.append(link)        return page_group    def geteveryapp(self,source):

everyapp = re.findall('(

)',source,re.S)        return everyapp    def getinfo(self,eachclass):

info = {}

str1 = str(re.search('', eachclass).group(0))

app_url = re.search('"(.*?)"', str1).group(1)

appdown_url = app_url.replace('appinfo', 'appdown')

info['app_url'] = appdown_url        print appdown_url        return info    def saveinfo(self,classinfo):

= open('info.txt','a')

str2 "http://apk.hiapk.com"

for each in classinfo:

f.write(str2)

f.writelines(each['app_url'] ' ')

f.close()if __name__ ='__main__':

appinfo = []

url 'http://apk.hiapk.com/apps/MediaAndVideo?sort=5&pi=1'

appurl = spider()

all_links = appurl.changepage(url, 5)    for link in all_links:        print u'正在处理页面+ link

html = appurl.getsource(link)

every_app = appurl.geteveryapp(html)        for each in every_app:

info = appurl.getinfo(each)

appinfo.append(info)

appurl.saveinfo(appinfo)

总结

选取的目标网页相对结构清晰简单,这是一个比较基本的爬虫。代码写的比较乱,见谅。

作者:CaptainXero

最新文章
全球要闻:美股势迎5年来最惨十月 美联储领衔三大央行公布利率决议
  10月30日消息,由于美债风暴持续席卷市场,加上美股大型科技股财报喜忧参半,以及地缘政治的变幻莫测,美股上周表现可以说是相当惨淡。  三大指数均累计跌超2%,标普500指数跌入回调区间,同时也跌破4200点这一重要支撑水平,10月累
怎样让百度收录网站内容不显示【如何让百度不收录网站】
本文目录导读:百度收录机制与不显示的原因在当今的互联网时代,自媒体的发展如火如荼,许多网站主都希望自己的内容能够被百度收录,以获得更多的流量和曝光度,有时候我们会发现,即使百度已经收录了我们的网站内容,却并不会显示出来,这
《逆水寒》带您探寻“汴京”的另一面
t2627_2_2627_1:4.0t1-t0:33.0t2-t1:7.0t3-t2:0.0t4-t3:2.0t5-t4:13.0t6-t5:15.0t7-t6:2.0t8-t7:0.0t9-t8:11.0t10-t9:0.0t11-t10:3.0t12-t11:0.0t13-t12:0.0t14-t13:0.0t15-t14:1.0t16-t15:0.0t17-t16:0.0t18-t17:29.0t19-t18:4.0t20-t19:1
paypal官网登录首页入口(网页版入口网址链接)
PayPal是国际贸易支付工具,全球使用的用户非常的多,即时到账且安全的支付平台,相当于国际版的支付宝或是微信,在线转账非常方便。本篇文章给大家分享PayPal官网登录首页入口,通过电脑浏览器即可访问登录。PayPal成立于1998年,是美国加
修改网站标题且不降权有效增加收录如何做?修改网站标题技巧分析
 本文将由一品小编为您介绍关于如何修改网站标题,有效增加收录而不降低权重的技巧和方法,希望能够帮助大家优化网站内容,提升搜索引擎的排名和曝光度。  网站标题的重要性与影响  网站标题在搜索引擎优化中占据了至关重要的位置。它
10款银行资金管理软件排名,让您选对满意的财务工具
目录: 现在为您呈上一篇小红书用户分享的畅捷通代账软件排名及使用体验。畅捷通代账软件是一款功能强大、操作简单、界面友好的银行资金管理软件,被广大用户誉为最佳银行资金管理软件之一。以下是排名及使用体验,手残党必备,建议收藏!畅
什么叫做真正的seo
王通在后来者的竞争挑战下,终于率先撕下了seo的神秘面纱。说到seo,很多个人站长比专业的seo公司都有道道。他们在没有尝够甜头之前,一般是不愿意透漏的。正如王通所说,任何一个做seo的人都不太清楚搜索引擎的算法,大家都是在摸索、尝
AI写作全方位解析:了解人工智能写作的原理、应用与未来发展前景-人工智能al写作
随着互联网技术的飞速发展人工智能正逐步渗透到咱们生活的方方面面而其中最引人关注的一个领域便是写作。写作是指利用计算机程序模拟人类写作表现生成高品质文本的过程。这一技术不仅极大地加强了信息解决效率还为内容创作提供了全新的视角
亲测Simply Static Pro v1.6.0 静态站点网页静态化插件下载
简单静态使用 Simply Static(最好的 WordPress 静态网站生成器插件)将您现有的 WordPress 网站转换为静态网站。它拥有超过 50,000 名活跃用户和超过 600,000 次下载,是最受欢迎的 WordPress 静态网站生成器。最好的 WordPress 静态站点
【自动驾驶】12.百度Apollo对ROS的优化【详细干货】
转载自 “Apollo智能驾驶” 公众号 和搜狐网 “百度开发者中心” : 原文链接7月22日,百度自动驾驶事业部资深架构师、数据平台专家杨凡,百度自动驾驶资深架构师何玮,百度智能驾驶事业部资深架构师郁浩三名讲师在中关村
相关文章
推荐文章
发表评论
0评