详解抓取网站，模拟登陆，抓取动态网页的原理和实现（Python，C#等）

版本：v1.1

Crifan Li

摘要

本文主要介绍了抓取网站，模拟登陆，抓取动态网页相关的逻辑，原理和如何实现。

主要包括：

  • 抓取网页，模拟登陆等背后的通用的逻辑和原理
  • 以提取songtaste网页中标题为例，详解如何抓取网站并提取网页内容
  • 以模拟登陆百度为例，详解如何模拟登陆网站
  • 以抓取网易博客帖子中的最近读者信息为例，详解如何抓取动态网页中的内容
  • 详解了在模拟登陆和抓取动态网页过程中，如何用对应的网页分析工具，如IE9的F12，Chrome的Ctrl+Shift+J，Firefox的Firebug，去分析出对应的逻辑
  • 针对抓取网站，模拟登陆，抓取动态网页，全部给出了完整的可用的，多种语言的示例代码：Python，C#，Java，Go等

[提示] 本文提供多种格式供：
在线阅读 | HTML | HTMLs | PDF | CHM | TXT | RTF | WEBHELP
下载（7zip压缩包） | HTML | HTMLs | PDF | CHM | TXT | RTF | WEBHELP

HTML版本的在线地址为：

http://www.crifan.com/files/doc/docbook/web_scrape_emulate_login/release/html/web_scrape_emulate_login.html

有任何意见，建议，提交bug等，都欢迎去讨论组发帖讨论：

http://www.crifan.com/bbs/categories/web_scrape_emulate_login/

2013-09-22

修订历史
修订 1.1 2013-09-22 crl
  1. 把之前教程的地址整理过来
  2. 添加新帖子的链接：模拟登陆百度的java版，go语言版

版权 © 2013 Crifan, http://crifan.com

本文章遵从：署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)

目录

前言
1. 本文目的
1. 网站抓取，模拟登陆，抓取动态网页的通用逻辑
2. 如何抓取静态网页并提取特定内容
3. 如何模拟登陆网站
3.1. （多种语言实现）模拟登陆百度
3.2. （多种语言实现）模拟登陆gogole
4. 如何抓取动态网页并提取特定内容
4.1. 抓取动态网页示例：网易163博客的心情随笔FeelingCard
5. 抓取静态或动态网页和模拟登陆的注意事项和总结
参考书目


前言

目录

1. 本文目的

1. 本文目的

本文目的在于，如何从无到有的，了解抓取网站，模拟登陆，抓取动态网页方面的逻辑和具体实现。


第 1 章 网站抓取，模拟登陆，抓取动态网页的通用逻辑

[提示] 相关旧帖

如何用Python，C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站

【整理】各种浏览器中的开发人员工具Developer Tools：IE9的F12，Chrome的Ctrl+Shift+J，Firefox的Firebug

【总结】浏览器中的开发人员工具（IE9的F12和Chrome的Ctrl+Shift+I）-网页分析的利器

【整理】关于抓取网页，分析网页内容，模拟登陆网站的逻辑/流程和注意事项

【教程】如何利用IE9的F12去分析网站登陆过程中的复杂的（参数，cookie等）值（的来源）

【整理】关于http(GET或POST)请求中的url地址的编码(encode)和解码(decode)

【整理】关于HTML网页源码的字符编码（charset）格式（GB2312，GBK，UTF-8，ISO8859-1等）的解释

【整理】网页抓取，模拟登陆，抓取动态网页内容等过程中，所涉及的Headers信息，Cookie信息，POST数据的处理逻辑

【整理】关于用正则表达式处理html代码方面的建议


第 2 章 如何抓取静态网页并提取特定内容

[提示] 相关旧帖

【教程】抓取网并提取网页中所需要的信息 之 Python版

【教程】抓取网并提取网页中所需要的信息 之 C#版


第 3 章 如何模拟登陆网站

目录

3.1. （多种语言实现）模拟登陆百度
3.2. （多种语言实现）模拟登陆gogole

下面，给出足够多的例子：

3.1. （多种语言实现）模拟登陆百度

先去用工具分析逻辑：

【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程

再去用代码实现，此处，目前已经实现了：

  • C#版

    【教程】模拟登陆网站 之 C#版（内含两种版本的完整的可运行的代码）

  • Python版

    【教程】模拟登陆网站 之 Python版（内含两种版本的完整的可运行的代码）

  • Java版

    【教程】模拟登陆百度之Java代码版

  • Go语言版

    【记录】用go语言实现模拟登陆百度


3.2. （多种语言实现）模拟登陆gogole

另外，也弄了个，模拟登陆google：

【记录】模拟登陆google


第 4 章 如何抓取动态网页并提取特定内容

目录

4.1. 抓取动态网页示例：网易163博客的心情随笔FeelingCard

先去看看：

【教程】如何抓取动态网页内容

搞懂，抓取动态网页的逻辑。

再去看下面的例子：

4.1. 抓取动态网页示例：网易163博客的心情随笔FeelingCard

【记录】给BlogsToWordPress添加支持导出网易的心情随笔

【教程】以抓取网易博客帖子中的最近读者信息为例，手把手教你如何抓取动态网页中的内容

【记录】用Python解析网易163博客的心情随笔FeelingCard返回的DWR-REPLY数据


第 5 章 抓取静态或动态网页和模拟登陆的注意事项和总结

[提示] 相关旧帖

【总结】静态网页抓取，动态网页抓取，模拟登陆的注意事项和心得


参考书目

[1] 如何用Python，C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站