python3.6+BeautifulSoup4 爬取360手机助手app应用的信息并存储数据库 批量下载apk

本文主要是介绍python3.6+BeautifulSoup4 爬取360手机助手app应用的信息并存储数据库 批量下载apk,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源码:
#/usr/bin/python
#encoding:utf-8
'''
Created on 2018年01月12日
@author: xianqingchen
'''
import requests
from bs4 import BeautifulSoup
import os
from urllib.request import urlopen
import pymysql
def GetAppinfo(urlhead,page):
head = {}   #设置头 
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'
#获取url路径
get_url=urlhead;
#模拟浏览器,定制http请求头
try:
appinfo_html=requests.get(url=get_url,headers = head)
# UTF-8模式读取获取的页面信息标签和内容
appinfo_xml=BeautifulSoup(appinfo_html.text,'lxml');
#获取应用中的所有分类的标签xml
appin_subcalssxml1=appinfo_xml.find_all('ul',{"class":"select"})
appin_subcalssxml2=appin_subcalssxml1[0].find_all('a')
except:
print("父类标签页面,出现异常,终止")
# 连接数据库
connect=pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='cecgw',
db='app',
charset='utf8'
)
# 获取游标
cursor = connect.cursor()
for appin_a in appin_subcalssxml2:
href=appin_a.get('href')
if href.find('/list/index/cid')==-1:
pass
else:
if href=='/list/index/cid/1/':
pass
else:
appsubclassname=appin_a.get_text()
for page in range(1,page+1):
dict1={}
try:
appin_subclaurl='http://zhushou.360.cn'+href+'?page='+str(page)
appinfo_html=requests.get(url=appin_subclaurl,headers = head)
appinfo_xml=BeautifulSoup(appinfo_html.text,'lxml');
appinfo_appullist=appinfo_xml.find_all('ul',{'class','iconList'})
appinfo_applilist=appinfo_appullist[0].find_all('li')
except:
print("appsubcalss exception",appin_subclaurl)
for appinfo_appxml in appinfo_applilist:
applinkt1=appinfo_appxml.find_all('h3')[0]
app_name=applinkt1.get_text()
apphref=applinkt1.find_all('a')[0].get('href')
#app的详情的url
appurl='http://zhushou.360.cn'+apphref
#                         print(appurl)
applinka=appinfo_appxml.find_all('a')
for applinkaa in applinka:
appa=applinkaa.get('class')
try:
if appa is not None:
if len(appa)==3:
if appa[2].find('normal')==-1:
pass
else:
#app的下载url
app_loadurl=applinkaa.get('href').split('url=')[1]
#                                         appDownload(app_loadurl)
#获取app详情的页码的xml           
appdeinfo_html=requests.get(url=appurl,headers = head)
appdeinfo_xml=BeautifulSoup(appdeinfo_html.text,'lxml');
appdepf=appdeinfo_xml.find_all('div',{'class':'pf'})[0]
appdebreif=appdeinfo_xml.find_all('div',{'class':'breif'})[0]
except:
print("appdeinfo  exception",appurl)
#app的详情
appscore=appdepf.find_all('span')[0].get_text()
appscounts=appdepf.find_all('span')[3].get_text().split(':')[1]
appsize=appdepf.find_all('span')[4].get_text()
appauthor=appdebreif.find_all('td')[0].get_text().split(':')[1]
appdate=appdebreif.find_all('td')[1].get_text().split(':')[1]
appver=appdebreif.find_all('td')[2].get_text().split(':')[1]
appsyst=appdebreif.find_all('td')[3].get_text().split(':')[1]
applan=appdebreif.find_all('td')[4].get_text().split(':')[1]
data=(appsubclassname,app_name,appscore,appscounts,appsize,appauthor,appdate,
appver,appsyst,applan,appurl,app_loadurl) 
try:                      
# 插入数据
sql ="""INSERT INTO AppInfo(subclass, appname, score,counts,size,author,update1,version,supsystem,language1,appurl,loadurl) VALUES( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )"""
cursor.execute(sql % data)
connect.commit()
except:
print('数据库存储异常',data)
break;
break;
# 关闭连接
cursor.close()
connect.close()
def appDownload(url):
file_name=url.split('/')[-1].strip()
u = urlopen(url)
path=os.path.abspath("..")+'/pak/'
f = open(path+file_name, 'wb')
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
f.write(buffer)
f.close()
print ("Sucessful to download" + " " + file_name)
if __name__ == '__main__':
url='http://zhushou.360.cn/list/index/cid/1/';
page=1
app_dict=GetAppinfo(url,page)
下载结果:

这篇关于python3.6+BeautifulSoup4 爬取360手机助手app应用的信息并存储数据库 批量下载apk的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/xianjie0318/article/details/79233105
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/848089

相关文章

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、