如何用30行代码爬取Google Play 100万个App的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用30行代码爬取Google Play 100万个App的数据相关的知识,希望对你有一定的参考价值。
参考技术A 基础工作:内置元素选择器
序列化存储数据
处理cookie、HTTP些东西间件
爬取 Sitemap 或者 RSS
等等
我需求爬取 Google Play 市场所 App 页面链接及载数量
首先确保配置 Python 2.7, MongoDB 数据库, 及 Python pip 包管理系统
安装应 Python 包并且项目模板:
pip install scrapy scrapy-mongodb
scrapy startproject app
cd app
scrapy genspider google
app/spider/google.py 换面内容:
`# -*- coding: utf-8 -*-
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.linkextractors import LinkExtractor
from app.items import GoogleItem
class GoogleSpider(CrawlSpider):
name = "google"
allowed_domains = ["play.google.com"]
start_urls = [
'',
''
]
rules = [
Rule(LinkExtractor(allow=("\.google\.com/store/apps/details", )), callback='parse_app',follow=True),
] # CrawlSpider 根据 rules 规则爬取页面并调用函数进行处理
def parse_app(self, response):
# 获取页面 URL 及载数量
item = GoogleItem()
item['url'] = response.url
item['num'] = response.xpath("//div[@itemprop='numDownloads']").xpath("text()").extract()
yield item
app/items 添加面代码:
class GoogleItem(scrapy.Item):
url = scrapy.Field()
num = scrapy.Field()
app/setting.py 面添加面代码
# 配置 scrapy-mongodb 数据库连接用于自爬取数据存入 MongoDB
ITEM_PIPELINES = [
'scrapy_mongodb.MongoDBPipeline',
]
MONGODB_URI = 'mongodb://127.0.0.1:27017'
MONGODB_DATABASE = 'scrapy'
MONGODB_COLLECTION = 'play'
没其工作连配置文件共四十行启 MongoDB项目目录运行
scrapy crawl google -s JOBDIR=app/jobs
静静等跑完吧-s JOBDIR=app/jobs 参数意思工作状态已经爬取页面数据存 app/jobs 目录即使间断运行面命令该目录恢复工作用重新始
我 Linode 低配 VPS 跑概 40 MongoDB 数据 156 万条记录2015 1 月新闻 Google Play 143 万款 App, 相信已经爬取绝数 App 页面
`> use scrapy
switched to db scrapy
> db.play.count()
1564754
> db.play.find().limit(1)
"_id" : ObjectId("55479d9da28a7c1cca449c23"), "url" : "", "num" : [ " 100,000,000 - 500,000,000 " ]()
>
如何用Python网络爬虫爬取网易云音乐歌曲
今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地。
跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两个参数,其实爬取歌曲也是同样的道理,也需要传入这两个参数,只不过网易云歌曲的URL一般人找不到。不过也不要慌,有小编在,分分钟扫除您的烦恼。
网易云歌曲一般会有一个外链,专门用于下载音乐音频的,以赵雷的歌曲《成都》为例,《成都》的外链URL是:
http://music.163.com/song/media/outer/url?id=436514312.mp3,其中436514312这个数字是《成都》这首歌曲的ID。也就是说只要我们将歌曲的ID传入到外链URL中,就可以找到该歌曲的下载地址,之后通过Python标准库进行下载即可。
话不多说,直接上代码:
程序设计好之后,运行程序,输入歌手的ID,以赵雷为例,其ID是6731,输入这个ID数值之后,程序将自动将赵雷的专辑歌曲及其对应的歌词下载到本地,运行的效果图如下所示:
程序运行完毕之后,歌词和歌曲都down到本地了,如下图:
之后在本地便可以听到优雅的歌曲了,如《成都》,见下图:
大家以后要听歌曲的话只要运行这个爬虫程序,输入你喜欢的那位歌手的ID,稍等片刻,就可以听到你想要的歌曲啦~~~10万首歌曲就不在话下啦,只要你愿意,随便多少首都行~~
最后小编祝福大家身体健康,工作顺利~~欢迎大家转载噢
今天这个程序完整的代码截图可以参考小编分享的那篇基于Python网易云音乐歌词爬取文章,结合今天的代码,就可以如愿以偿啦~~~
以上是关于如何用30行代码爬取Google Play 100万个App的数据的主要内容,如果未能解决你的问题,请参考以下文章