如何用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的数据的主要内容,如果未能解决你的问题,请参考以下文章

google play支付如何用php验证订单完成的合法性

如何用100行实现Docker?

如何用30行代码实现在线课堂应用不卡顿不掉线?

如何用30行代码实现在线课堂应用不卡顿不掉线?

请问如何用python将爬取的数据逐条传入MongoDB数据库,请大牛指点。

java如何用FileIputStream按行读取csv文件 求代码