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. 把之前教程的地址整理过来

目录

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

前言

1. 本文目的

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

2. 前提

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

如果不清楚,请先去参考:

详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

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

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

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

TODO:add code

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

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

getUrlResponse和getUrlRespHtml

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

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

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

其实主要分两大方面:

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

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

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

第 2 章 Python中的网络处理

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

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

第 3 章 Python中的HTMl解析

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

参考书目