Python网络爬虫--爬取POJテーマ


1.関連用語
1.ネット爬虫類
ネット爬虫類、すなわちWeb Spiderは、とてもイメージのある名前です.インターネットを蜘蛛の巣にたとえると、Spiderはネット上を這い回る蜘蛛だ.ネットクモはウェブページのリンクアドレスを通じてウェブページを探しています.サイトのあるページ(通常はトップページ)から、ページの内容を読み取り、ページ内の他のリンク先を見つけ、これらのリンク先を通じて次のページを探し、このサイトのすべてのページをキャプチャするまでループします.インターネット全体をウェブサイトと見なせば、ネットクモはこの原理でインターネット上のすべてのページを捕まえることができる.このように見ると、ネット爬虫類は爬行プログラムであり、ウェブページを捕まえるプログラムである.ネット爬虫類の基本的な操作は、Webページをキャプチャすることです.
2. URL
ユニバーサルリソースロケータ(UniformResourceLocator)、一般的なフォーマットはprotocol://hostname[:port]/path/[;parameters][?query]#fragment
URLのフォーマットは、1第1の部分がプロトコル(またはサービス方式と呼ばれる)である3つの部分から構成される.②第2部は、当該リソースが格納されているホストIPアドレス(ポート番号も含む場合がある)である.③第3部は、ディレクトリやファイル名など、ホストリソースの具体的なアドレスです.第1部と第2部は「://」で区切られ、第2部と第3部は「/」で区切られている.第1部と第2部は不可欠であり、第3部は省略できる場合がある.
3. URI
ユニバーサルリソースフラグ(UniversalResourceIdentifier).
URIは通常3つの部分から構成される:1リソースにアクセスするネーミングメカニズム;②保管資源のホスト名;③リソース自体の名称は、経路で示す.以下のURIのように:http://www.why.com.cn/myhtml/html1223/1これはHTTPプロトコルでアクセスできるリソースであり、2ホストwww.webmonkey.にある.com.cn上、③はパス「/html/html 40」でアクセスします.
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