Python专题教程：抓取网站，模拟登陆，抓取动态网页

版本：v1.0

Crifan Li

摘要

本文是针对Python的中级开发人员，介绍如何用Python语言去实现抓取网站，模拟登陆，
抓取动态网页。其中主要涉及到，网络处理方面的模块（urllib，urllib2等），以及HTML
解析相关的模块（BeautifulSoup，json等）。

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

    HTML版本的在线地址为：

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

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

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

2013-02-06

┌─────────────────────────────────────────────────────────────────────────────┐
│修订历史                                                                     │
├────────────────────────────┬──────────────────────────────────────┬─────────┤
│修订 1.0                    │2013-02-06                            │crl      │
├────────────────────────────┴──────────────────────────────────────┴─────────┤
│ 1. 把之前教程的地址整理过来                                                 │
└─────────────────────────────────────────────────────────────────────────────┘

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

目录

前言

    1. 本文目的
    2. 前提

1. 如何用Python实现网站抓取，模拟登陆，抓取动态网页
2. Python中的网络处理
3. Python中的HTMl解析
参考书目

前言

目录

1. 本文目的
2. 前提

1. 本文目的

本文目的在于，在已经了解了抓取网站，模拟登陆，抓取动态网页方面的逻辑后，如何用
Python语言去实现这部分的逻辑。

2. 前提

讨论如何用Python去实现，网站抓取，模拟登陆，抓取动态网页的话，前提是你需要对这
部分的逻辑已经比较清楚了。

如果不清楚，请先去参考：

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

第 1 章 如何用Python实现网站抓取，模拟登陆，抓取动态网页

[提 相关旧帖
示] 【教程】抓取网并提取网页中所需要的信息之 Python版

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

其实，对于urllib等库，已经做得够好了，尤其是易用性上，已经很方便使用了。

比如，直接可以通过如下代码，即可获得从网页的地址，而得到其网页的源代码了

TODO：add code

但是呢，由于实际上，和网页抓取，网页模拟登陆等方面，需要用到cookie，以及其他
header参数，导致想要获得一个，功能强大且好用的，用于网络抓取方面的函数，则还是
需要额外花很多功夫的

而我后来就是在折腾网络抓取方面，前前后后，经过实际使用而积累出来很多这方面的经
验，最终，写了个相关的，功能更加强大一些，更加方便使用的函数的。主要是2个函数：

getUrlResponse和getUrlRespHtml

TODO：添加两个函数来自crifanLib的解释

TODO：再添加这两个函数的几种用法

TODO：再添加另外几个相关的函数的解释，包括downloadFile等函数

其实主要分两大方面：

一方面是把网站的内容抓取下来，涉及到和网络处理方面的模块

另外一方面是如何解析抓取下来的内容，即涉及到HTML解析等方面的模块

下面就来解释这两大方面相关的逻辑，以及如何用Python实现对应的这部分的功能。

第 2 章 Python中的网络处理

主要涉及的一些，和网络处理方面有关的模块是，urllib，urllib2等

[提 相关旧帖
示] 【整理】Python中用于解析Http数据包的模块/库

    【已解决】Python中使用cookielib的FileCookieJar去save()，结果出错：
    NotImplementedError

    【整理】Python中Cookie的处理：自动处理Cookie，保存为Cookie文件，从文件载入
    Cookie

TODO：整理对应的，带urllib和urllib2方面的帖子进来。

第 3 章 Python中的HTMl解析

[提 相关旧帖
示] BeautifulSoup模块简介

    【教程】Python中第三方的用于解析HTML的库：BeautifulSoup

    【总结】Python的第三方库BeautifulSoup的使用心得

    【整理】关于Python中的html处理库函数BeautifulSoup使用注意事项

    【已解决】用BeautifulSoup解析Html格式的Json字符串

    【经验记录】Python中json.loads的时候出错->要注意要解码的Json字符的编码

    【已解决】Python中json.loads解析包含\n的字符串会出错

    【已解决】Python中使用json.loads解码字符串时出错：ValueError: Expecting
    property name: line 1 column 1 (char 1)

    【已解决】Python中用json.loads解码字符串出错：ValueError: No JSON object
    could be decoded

Python中和解析抓取的网站内容，即解析HTML，JSON等方面，相关的模块有，
BeautifulSoup，json等

参考书目

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

