Python网络爬虫——爬取POJ题目

1.相关术语

1.网络爬虫

网络爬虫,即Web Spider,是一个很形象的名字。
把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。
网络蜘蛛是通过网页的链接地址来寻找网页的。
从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,
然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。
网络爬虫的基本操作是抓取网页。

2. URL

通用资源定位符 (UniformResourceLocator) ,一般格式为 protocol://hostname[:port]/path/[;parameters][?query]#fragment

URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“://”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。

3. URI

通用资源标志符 (UniversalResourceIdentifier)

URI通常由三部分组成:
①访问资源的命名机制;
②存放资源的主机名;
③资源自身 的名称,由路径表示。
如下面的URI:
http://www.why.com.cn/myhtml/html1223/
我们可以这样解释它:
①这是一个可以通过HTTP协议访问的资源,
②位于主机 www.webmonkey.com.cn上,
③通过路径“/html/html40”访问。

4. URL与URI的区别

二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。
而URL同时说明要如何访问这个资源(http://)。

2.实例——爬取POJ所有的题目

#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'bigship'
import urllib2
num = 1
mood = "href=problem?id="
head ="href=problem?id="
tail = "</a>"
tmpurl = 'http://poj.org/problemlist?volume='
while num <= 31:
    url = tmpurl+str(num)
    response = urllib2.urlopen(url)
    html = response.read()
    ph=html.find(head)
    while ph != -1:
        pt = html.find(tail,ph+1)
        ans = html[ph+len(mood):ph+len(mood)+4]+' '+html[ph+len(mood)+5:pt]
        ph = html.find(head,ph+1)
        print "POJ "+ans
    num=num+1

你可能感兴趣的:(python,网络爬虫)