2016-09-07 6 views
0

私は、Webページをつかみ、その中のすべてのURLリンクを見つける簡単なPythonプログラムを書いています。 。Pythonインデックス関数

# open a url and find all the links in it 
import urllib2 

url=urllib2.urlopen('right.html') 
urlinfo = url.info() 
urlcontent = url.read() 
bodystart = urlcontent.index('<body') 
print 'body starts at',bodystart 
bodycontent = urlcontent[bodystart:].lower() 
print bodycontent 

linklist = [] 
n = bodycontent.index('<a href=') 
while n: 
    print n 
    bodycontent = bodycontent[n:] 
    a = bodycontent.index('"') 
    b = bodycontent[(a+1):].index('"') 
    print a, b 
    linklist.append(bodycontent[(a+1):b]) 
    n = bodycontent[b:].index('<a href=') 

print linklist 

答えて

0

ba+1から部分に相対的であるしかし、私は、インデックスに各HREFリンクの開始および終了の区切り文字( ")が、間違ったインデックスを付け、常にエンディング1を試し、配列へので、アクセスは次のようになります。

linklist.append(bodycontent[(a+1):(a+1+b)]) 

他の回答で述べたように、それはBeautifulSoupのように、指定されたライブラリで動作するように、通常は望ましいです。

3

私は、HTMLの構文解析ライブラリを使用する代わりに、手動でDOMを検索することをお勧め文字列。

美しいスープは、この目的のための優れたライブラリです。

from bs4 import BeautifulSoup 
soup = BeautifulSoup(bodycontent, 'html.parser') 
linklist = [a.get('href') for a in soup.find_all('a')] 
:ここにあなたのリンクの検索機能は、次のようになり、BSと参照

です