一,爬虫是什么?

爬虫就是获取网络上各种资源,数据的一种工具。具体的可以自行百度。

二,如何写简单爬虫

1,获取网页内容

可以通过 Python(3.x) 自带的 urllib,来实现网页内容的下载。实现起来很简单

import urllib.request

url="http://www.baidu.com"
response=urllib.request.urlopen(url)
html_content=response.read()

还可以使用三方库 requests ,实现起来也非常方便,在使用之前当然你需要先安装这个库:pip install requests 即可(Python 3以后的pip非常好使)

import requests

html_content=requests.get(url).text

2, 解析网页内容

获取的网页内容html_content,其实就是html代码,我们需要对其进行解析,获取我们所需要的内容。

解析网页的方法有很多,这里我介绍的是BeautifullSoup,由于这是一个三方库,在使用前 还是要先安装 :pip install bs4

form bs4 imort BeautifullSoup

soup= BeautifullSoup(html_content, "html.parser")

更多使用方法请参考官方文档:http://beautifulsoup.readthedocs.io/zh_CN/latest/

三,实例分析

弄懂爬虫原理的最好办法,就是多分析一些实例,爬虫千变万化,万变不离其宗。废话少说上干货。

===================================我是分割线===================================================

需求:爬取小米应用商店的TOP n 应用

通过浏览器打开小米应用商店排行棒页面,F12审查元素

#coding=utf-8
import requests
import re
from bs4 import BeautifullSoup def parser_apks(self, count=0):
'''小米应用市场'''
_root_url="http://app.mi.com" #应用市场主页网址
res_parser={}
page_num=1 #设置爬取的页面,从第一页开始爬取,第一页爬完爬取第二页,以此类推
while count:
#获取排行榜页面的网页内容
wbdata = requests.get("http://app.mi.com/topList?page="+str(page_num)).text
print("开始爬取第"+str(page_num)+"页")
#解析页面内容获取 应用下载的 界面连接
soup=BeautifulSoup(wbdata,"html.parser")
links=soup.body.contents[3].find_all("a",href=re.compile("/details?"), class_ ="", alt="") #BeautifullSoup的具体用法请百度一下吧。。。
for link in links:
detail_link=urllib.parse.urljoin(_root_url, str(link["href"]))
package_name=detail_link.split("=")[1]
#在下载页面中获取 apk下载的地址
download_page=requests.get(detail_link).text
soup1=BeautifulSoup(download_page,"html.parser")
download_link=soup1.find(class_="download")["href"]
download_url=urllib.parse.urljoin(_root_url, str(download_link))
#解析后会有重复的结果,下面通过判断去重
if download_url not in res_parser.values():
res_parser[package_name]=download_url
count=count-1
if count==0:
break
if count >0:
page_num=page_num+1
print("爬取apk数量为: "+str(len(res_parser)))
return res_parser
def craw_apks(self, count=1, save_path="d:\\apk\\"):
res_dic=parser_apks(count) for apk in res_dic.keys():
print("正在下载应用: "+apk)
urllib.request.urlretrieve(res_dic[apk],save_path+apk+".apk")
print("下载完成")
if __name__=="__main__":

    craw_apks(10)

运行结果:

开始爬取第1页
爬取apk数量为: 10
正在下载应用: com.tencent.tmgp.sgame
下载完成
.
.
.

以上就是简单爬虫的内容,其实爬虫的实现还是很复杂的,不同的网页有不同的解析方式,还需要深入学习。。。

Python 爬虫入门实例(爬取小米应用商店的top应用apk)的更多相关文章

  1. Python 爬虫入门之爬取妹子图

    Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...

  2. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  3. Python 爬虫入门(一)——爬取糗百

    爬取糗百内容 GitHub 代码地址https://github.com/injetlee/Python/blob/master/qiubai_crawer.py 微信公众号:[智能制造专栏],欢迎关 ...

  4. python 爬虫入门----案例爬取上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...

  5. python 爬虫入门案例----爬取某站上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间开始学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSou ...

  6. Python爬虫入门:爬取豆瓣电影TOP250

    一个很简单的爬虫. 从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03 分享写这个代码用到了的学习的链接: BeautifulSoup ...

  7. python爬虫+正则表达式实例爬取豆瓣Top250的图片

    直接上全部代码 新手上路代码风格可能不太好 import requests import re from fake_useragent import UserAgent #### 用来伪造爬头部信息 ...

  8. Python爬虫入门:爬取pixiv

    终于想开始爬自己想爬的网站了.于是就试着爬P站试试手. 我爬的图的目标网址是: http://www.pixiv.net/search.php?word=%E5%9B%9B%E6%9C%88%E3%8 ...

  9. python 爬虫入门1 爬取代理服务器网址

    刚学,只会一点正则,还只能爬1页..以后还会加入测试 #coding:utf-8 import urllib import urllib2 import re #抓取代理服务器地址 Key = 1 u ...

随机推荐

  1. yyblog2.0 数据库开发规范

    一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)表字符集默认使用utf8,必要时候使用utf8mb4 解读:1. ...

  2. vuex语法精简(方便开发查阅)

    vuex语法精简(方便开发查阅) store结构 state Getter Mutation actions vuex语法精简(方便开发查阅) 本文只是方便开发的时候快速查阅到相关语法,想看详细内容请 ...

  3. 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台OpenResty®

    OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 W ...

  4. Oracle数据库备份与恢复的三种方法

    转自blueskys567原文Oracle数据库备份与恢复的三种方法, 2006-10. 有删改 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份. 导出 ...

  5. 菜单与内容下拉jQuery

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. linux下实时查看log

    1.先切换到:cd usr/local/tomcat5/logs2.tail -f catalina.out3.这样运行时就可以实时查看运行日志了 Ctrl+c 是退出tail命令. 顺便讲一下lin ...

  7. Maven(七) maven 常用命令

    转载于:http://blog.csdn.net/hynet/article/details/8664747 1. 用Maven 命令创建一个简单的 Maven 项目 在cmd中运行如下命令: mvn ...

  8. tensorflow笔记 :常用函数说明

    常用函数说明,梯度.产生变量等 http://blog.csdn.net/c2a2o2/article/details/69061539

  9. LDa 通俗理解

    LDA理解以及源码分析(一) http://blog.csdn.net/pirage/article/details/50239125 LDA在主题建模中的应用,需要知道以下几点: 文档集中的word ...

  10. java基础一(阅读Head First Java记录)

    写在前面的话 在实际应用java中,因为没有系统去看过书或者学习过,所以基础薄弱,刚好这本书是比较入门级的一些书,记录一下下面的一些基本概念,以方便自己来学习.当然如果对大家有帮助也是很好的. 因为书 ...