最近需要把某网站的统计数据聚合到我们自己的系统里,但是该网站没有提供标准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>
分享到:
相关推荐
"抓取第三方界面文字程序"就是一个这样的工具,它能帮助用户获取第三方界面的句柄,并从中提取出文字信息。以下是对这个主题的详细讲解: 首先,我们需要理解“句柄”是什么。在Windows操作系统中,句柄是操作系统...
在IT领域,尤其是在Windows桌面应用开发中,"抓取窗体句柄"是一个常见的技术,主要用于控制或交互第三方应用程序。本教程将详细讲解如何利用C#实现这一功能,并通过提供的源码来展示具体操作。 首先,理解“窗体...
一个抓取第三方配件网站(igxe)的爬虫,具有完整的主页抓取、部分抓取、项目抓取、自定义抓取、重定向和简单的数据处理功能_ Project_PriceCrawler
3. **第三方库安装**: - `beautifulsoup4`(版本 4.5.1):用于解析 HTML 和 XML 文档,提取所需信息。下载地址为 ...
产业在线的数据来源包括自主调研采集、第三方数据采购和互联网平台抓取,其数据更贴近家电企业工厂的实际数据。相比之下,中怡康的数据则主要来源于其自建的监测网点和典型样本调查,监测网点覆盖市县1150余座,门店...
5. **交互数据**:使用LabVIEW的数据连线和事件结构,实现主VI与子面板(即嵌入的第三方软件)之间的数据交换。例如,你可以将LabVIEW的数值传递给第三方软件,或者接收软件的反馈结果。 6. **优化显示**:为了实现...
Python作为一种高级编程语言,在科学计算、数据分析、机器学习、可视化以及网络编程等领域拥有大量第三方库的支持。本文将详细解读这些流行的Python第三方库,以及如何安装它们,并介绍机器学习的基本概念。 首先,...
1. **HTTP请求**:在Java中,我们通常使用`HttpURLConnection`或第三方库如Apache HttpClient、OkHttp来发送HTTP请求。通过设置URL、请求方法(GET或POST)、Header参数等,可以定制化请求行为。 2. **HTML解析**:...
Python是一种强大的、面向对象的编程语言,其丰富的第三方库是其独特魅力的一部分。这些库极大地扩展了Python的功能,使得开发者可以高效地实现各种复杂任务,无论是数据处理、网络编程、科学计算还是图形用户界面...
通常,这些数据可能嵌套在HTML标签内,可以使用正则表达式、DOM解析(如MSXML或HTML Agility Pack)或第三方库如SuperObject来提取。对于JSON或XML格式的数据,使用相应的解析器会更方便。 4. **处理登录和验证码**...
这些密钥用于身份验证,确保请求来自于授权的第三方应用。一旦有了这些凭证,我们就可以初始化QWeibo4j的OAuth2Session,进行授权流程。 在实现过程中,首先要进行用户授权,这通常包括跳转到腾讯微博的授权页面,...
`packages`目录通常用于存放NuGet包,这些包可能包含了C#项目所依赖的第三方库,比如用于HTTP请求的`System.Net.Http`或正则相关的库。 通过研究这个项目,你可以了解C#中如何组织代码、如何进行网络请求、如何编写...
Python因其简洁的语法和丰富的第三方库,成为了网络爬虫开发的首选语言。Scrapy则是Python生态中的一个高级爬虫框架,它提供了一整套结构化的框架,包括请求调度、中间件处理、数据解析以及文件存储等功能,使得...
《网络爬虫之简单链接抓取》这篇文章及配套的源码`spider.py`主要讲述了如何构建一个基础的网络爬虫来抓取网页中的链接。网络爬虫是自动化浏览Web并提取信息的一种程序,它是大数据分析和搜索引擎的重要组成部分。...
在“易语言第三方库.zip”这个压缩包中,包含了丰富的扩展功能,总计213个第三方支持库,这些库为易语言用户提供了更广阔的应用场景和更强大的功能支持。 首先,我们要关注的是API支持库。API(Application ...
Python数据抓取技术是互联网时代获取大量有价值信息的重要手段,尤其在数据分析、研究以及网站维护等领域,Python以其简洁明了的语法和丰富的第三方库成为首选工具。本资料包"Python数据抓取技术与实战"旨在深入浅出...
在C#中,可以使用第三方库如SharpCompress来读取和操作RAR文件。 综合来看,这个项目展示了如何利用C#编程语言进行网页数据抓取,以及对抓取到的数据进行处理和存储,这对于数据分析、市场研究或是构建基于网页数据...
【标题】"非第三方接口,图片数据采集壁纸多多官方所有数据.zip" 提供的是一个用于获取壁纸数据的源码系统,它不依赖任何外部接口,而是直接与壁纸多多官方的数据进行交互。这样的设计保证了数据的准确性和安全性,...
图形生成方面,C#可以借助WPF或WinForms等桌面应用框架,结合System.Drawing或第三方库如OxyPlot,生成各种图表。在Web应用中,可以使用ASP.NET的Chart控件,或者结合JavaScript库如Chart.js或D3.js,将C#后端生成的...