`

抓取第三方网站数据

阅读更多

最近需要把某网站的统计数据聚合到我们自己的系统里,但是该网站没有提供标准API,所以就尝试自己抓取了一下。本文总结一下一般的方法
<!--more-->

分析服务地址

通常网站有2种做法,一种是后端渲染,直接把渲染后的完整界面呈现在浏览器;另一种前端是静态页面,通过ajax到后台取数据

后端渲染

这种网页抓取起来比较麻烦,因为结构不标准,需要从DOM里把需要的数据抠出来。node平台我推荐使用cheerio,API类似jquery,处理DOM比较方便

前端渲染

这种情况比较好处理,因为接口返回的数据结构一般比较规整,关键是要找到接口的地址。推荐使用chrome的dev console,切换到xhr标签,一般可以很容易找到需要的接口

处理鉴权

某些服务完全不鉴权,可以直接调用。麻烦的是大部分接口都需要鉴权,通常是校验用户身份

模拟登陆

最完美的做法是模拟登陆,先分析出登陆的服务地址,用charles代理,用浏览器实际登陆几次,尝试模拟登陆请求

不过这是理想情况,通常来说模拟登陆是很困难的。网站一般会用验证码,甚至https的方式来保护

登陆后复制cookie

所以更常见的方法,是先正常登陆,然后在chrome里查看普通http请求的header等信息,其中最关键的当然是Cookie字段,99%的网站都是用cookie来标识登陆用户。所以我们可以把普通请求的各种http header复制,这样一般都可以调通

推荐使用CocoaRestClient,用来测试发送http请求很方便

一般的网站,用复制cookie的方案都能搞定。但是也有一些比较麻烦的网站,会结合一些其他的安全方案,比如调用频率,校验ip等,这种只能具体分析,没有一定可行的做法

分析url

有时某些接口的请求参数包含在url里,比如:

http://www.xxx.com/apps/xxx/reports/load_chart_data?start_date=2015-08-09&end_date=2015-09-07&stats=trend_active_users

这个url里包含3个请求参数,通过构造url,可以实现不同的请求。关键是观察,一般的url都是比较容易发现规律的

csrf防御机制

某些网站,会在网页或url中放一个token来防止csrf,所以应对的方法是,找出此token,也放到request中

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    C# 抓取窗体句柄 来控制第三方应用程序.zip

    附件中包含一个被抓取句柄的窗体程序,直接打开,用C#源码就能控制抓取句柄的窗体程序,控制窗体上按钮的点击事件,读取textebox数据等等,可直接看出效果

    Python程序基础:网络爬虫的概念及数据抓取.pptx

    由于requests库是第三方库,因此,需要通过pip3指令进行安装,pip3安装命令如下:;网络爬虫工作流程的第一步是数据的抓取,也就是使用requests库实现发送HTTP请求和获取HTTP响应的内容。;调用get()函数是获取网页最...

    Python-Scrapy练习项目利用Scrapy抓取古诗

    Scrapy练习项目,利用Scrapy抓取古诗(唐诗三百首,宋词三百首等),并保存为json格式

    140种Python标准库、第三方库和外部工具.pdf

    其中既有Python内置函数和标准库,又有第三方库和工具。 这些库可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理、音频处理、数据挖掘/机器学习/深度学习、数据可视化、...

    Python自动化办公的第三方库.rar

    下面简单介绍下网络爬虫、自动化、数据分析与可视化、WEB开发、机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能吧。 1、网络爬虫 requests-对HTTP协议进行高度封装,支持非常丰富的链接...

    winform使用谷歌浏览器内核(安装cefSharp第三方包),浏览网页,获取网页源码

    下载解压后,查看readme.txt,运行例子

    一段python爬虫代码需要自行下载第三方库函数.zip

    一段简单的python爬虫代码,抓取的数据是足球运动员的信息,是刚学会时写的,为了看着简单很多地方可以合并但是我没合到一块,目标网站可能随着年限更新,所以代码需要小改,但是肯定可以执行

    php应用curl扩展抓取网页类

    一个php应用curl扩展抓取网页类,获取的信息以文件流的形式返回,而不是直接输出。正则方式抓取,抓取标题,抓取文章内容,获取抓取数据,最后进行一下测试。

    zxsq:抓取知识星球数据,方便打印学习

    需要用的第三方库请自行用pip3下载。需要安装的包有,reqeusts,pymongo,python-docx学习理财、财经知识可以到知识星球搜索“老齐的读书圈”和“齐俊杰的粉丝群”,都很不错。代码中就拿这两个星球做为例子。有疑问请...

    基于Python的网络爬虫与数据分析学年论文

    (2)第二章相关技术介绍主要说明本次毕业设计项目涉及到的相关语言和对应的工具,包括Python, URL,Matplotlib第三方库等,以及相关的开发工具PycharmCE。 (3)第三章项目需求与设计主要说明本次设计项目需要抓取的内容...

    最全最新中国省,市,地区MySQL数据

    文件取自github(上面有抓取程序和各种格式的数据):https://github.com/wecatch/china_regions 用法:先执行init.sql文件创建表,然后执行country.sql、province.sql、city.sql、town.sql插入数据即可。 在线...

    SQLite/Access/SQLServer管理工具

    本程序用Delphi7编写,用到第三方unicode组件、ASGSQLite3,主要功能实现在同一个窗口同时管理多种数据库(目前支持SQLite3、Access、SQL2000,若要支持其它数据库,可实现相应数据库接口),有点类似isqlw。...

    php基于curl实现的股票信息查询类

    php基于curl实现的股票信息查询类,结合完整实例形式分析了php使用curl调用API接口实现股票信息查询功能的相关操作技巧,股票信息查询功能我们是需要抓取第三方的数据,然后我们再把这些数据进行分析组成自己想要的。

    聚水潭操作手册_财务系统对接_售前方案.docx

    概述: 本文内容,主要是为了帮助销售人员或者售前人员,能够更加顺畅的与客户沟通财务系统对接方案。... 1、对接方式 目前,主要支持两种对接方式: ...② “第三方财务系统”需要从“聚水潭”抓取订单信息。 ③ 。

    用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例

    下面小编就为大家分享一篇用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧

    为对接微信提供快速 API 能力,包括微信、微信小程序、微信第三方平台.zip

    爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...

    2020中国互联网发展趋势报告-Fastdata极数-202003 (3).pdf

    2020中国互联网发展趋势报告 移动端数据:通过 储及统计分析。 SDK ...、彭博、各国相关统计机构、国际组织、第三方数据机构等。 统计周期:报告重点数据截止日期为 2020 年 2 月 29 日。

    ScrapeEverything:RESTful API,可抓取JavaScript呈现的html

    有许多第三方库可以抓取网站的html数据,但是大多数第三方库都无法抓取JavaScript动态生成的内容。 此API旨在解决此问题并简化“给定url以字符串形式返回html的过程” 技术领域 语言:C# 框架:ASP.NET 网页搜罗...

    WHC第三方控件

    1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类(AppConfig.cs) 2. CSV文件和DataTable对象转换辅助类(CSVHelper.cs) 3. DatabaseInfo 的摘要说明。(DatabaseInfo.cs) 4. 常用的目录操作辅助类...

Global site tag (gtag.js) - Google Analytics