Python爬虫:十分钟实现从数据抓取到数据API提供
2018-01-10 22:45
706 查看
依旧先从爬虫的基本概念说起,你去做爬虫做数据抓取,第一件事想必是去查看目标网站是否有api。有且可以使用的话,皆大欢喜。
假如目标网站自身不提供api,但今天你心情不好就想用api来抓数据,那怎么办。有个长者说,没api创造api也要上,所以,那就创造api吧~
先看效果图http://gk.chengdu.gov.cn/govInfoPub/list.action?classId=07170201020202&tn=2&p=1 (这个网站是没有api的哟)手机点进去可能没有数据,用pc端浏览器就好。
如你所见,Toapi会让数据变成一块蛋糕,你只需要将它切下来吃了(虽然中文的显示是unicode)。那么话不多说,看代码。
假如目标网站自身不提供api,但今天你心情不好就想用api来抓数据,那怎么办。有个长者说,没api创造api也要上,所以,那就创造api吧~
关于Toapi
很多时候你需要经历抓取数据->存储数据->构建API的基本步骤,然后在去定时更新数据。然而你的目的并不是想去学习搭建稳定可靠自动更新的API服务,你只是想用这个网站的数据而已。Toapi就是为此实现,可以自动化的完成前述任务,达到使用网站实时数据的目的。先看效果图http://gk.chengdu.gov.cn/govInfoPub/list.action?classId=07170201020202&tn=2&p=1 (这个网站是没有api的哟)手机点进去可能没有数据,用pc端浏览器就好。
如你所见,Toapi会让数据变成一块蛋糕,你只需要将它切下来吃了(虽然中文的显示是unicode)。那么话不多说,看代码。
from toapi import XPath, Item, Api from toapi import Settings class MySettings(Settings): web = { # 是否需要使用phantomjs加载 "with_ajax": False } # 需要构建api的目标网址 api = Api('http://gk.chengdu.gov.cn/govInfoPub/', settings = MySettings) class Post(Item): # api服务返回json的字段:网页上字段所对应Xpath # 这里Xpath是用列表识别自动识别的 可以看我以前的文章 url = XPath('/html/body/div[2]/div/div[3]//a/@href') title = XPath('/html/body/div[2]/div/div[3]//a/span[2]/text()') class Meta: # source :包含单个数据结构的HTML部分。 source = XPath('/html') # 一个正则表达式,定义API服务的路径。理解成flask中路由就好了 route = {"/test?page=:page":"list.action?classId=07170201020202&tn=2&p=:page"} # 注册该服务 api.register(Post) #运行服务器 api.serve() # Visit: http://127.0.0.1:5000/[/code]
满打满算10行代码吧,你就可以实现数据的api,心动不如行动还不给我打钱,啊呸,不好意思,串场了。下面还是解释下上面的代码。希望对你有帮助。
对了对了,你写这些代码不用十分钟吧,不要算我标题党。
安装:pip install toapi
Toapi基于flask,希望这点有助于理解框架的运行。
Toapi仅支持python3,这点非常遗憾,但是你一定会python3.
Item.Meta.route:支持正则。上面说了等同于flask中路由解析。其中上述代码中使用:page进行翻页。也就是说Key中的:xx于value中的:xx值保持一致,借此实现翻页效果。
Item.Meta.source:包含单个数据结构的HTML部分(你可以精确到比如source = XPath('//div[@id='xxx']'))。
api.register():注册服务准确的说是注册路由。
api.server():运行一个服务器,提供API服务。
相关文章推荐
- Python 网络爬虫5 ---- 第一次实现抓取数据并且存放到mysql数据库中
- python利用新浪API实现数据的抓取\python微博数据爬虫
- python利用新浪API实现数据的抓取\python微博数据爬虫
- Python实现爬虫抓取OJ代码
- 从Apache的日志文件收集和提供统计数据(一个Python插件架构的简单实现)
- 使用System.Text.RegularExpression中的API实现网页数据的抓取
- Python爬虫处理抓取数据中文乱码问题
- python 爬虫 实战(一) —— 抓取学校开课数据
- python 实现网站图片抓取小爬虫
- 07-爬虫的多线程调度 | 01.数据抓取 | Python
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
- 用python进行分布式网页数据抓取(三)—— 编码实现
- Python爬虫框架Scrapy实战之抓取户外数据
- python 实现redis 操作API 接口,提供其他程序调用
- java实现网络爬虫--抓取网站数据
- 用python实现的一个抓取图片的爬虫
- 用python实现一个抓取电影的爬虫
- Python 实现网络爬虫 抓取静态网页【代码】
- python&php数据抓取、爬虫分析与中介,有网址案例
- 基于 AXIS2/C 的 C 语言库实现对提供 REST API 的系统进行数据访问