2012-04-09 18 views
0

動作しません、と私は私のスクレーパーは、各警察署についての情報を含む特定のページへのすべてのリンクをこすりしたいが、それはサイト全体をほとんど返します。Webscraperは、私が手紙にかなりのチュートリアルに従っている

from urllib import urlopen 
import re 

f = urlopen("http://www.emergencyassistanceuk.co.uk/list-of-uk-police-stations.html").read() 

b = re.compile('<span class="listlink-police"><a href="(.*)">') 
a = re.findall(b, f) 

listiterator = [] 
listiterator[:] = range(0,16) 

for i in listiterator: 
    print a 
    print "\n" 

f.close() 
+1

あなたが続くチュートリアルを引用してください。 – Nix

+0

http://www.youtube.com/watch?v=Ap_DlSrT-iE私は彼がbeautifulsoupについて言及していることに気づきましたが、私のスクリプトでは機能のどれも使用していません。 –

+2

emergencyassistanceuk.co.ukは、今は交通量が多い...;) – Nix

答えて

-1

このクラスには1.6kを超えるリンクがあります。

私はあなたはそれが動作していない何だと思います...それが正しく動作しないでしょうか?


そして、あなたは間違いなく美しいスープを使用する必要があり、それは愚かな、シンプルで非常に使用可能です。

+0

ええ、それはHTMLを印刷します、私はそれをタグの間にすべて印刷するようにしようとしています。私はこのスクリプトがまさにその通りだと思った。 –

+0

あなたはあなたの質問を「私はあなたの質問に 'regexする必要があります私の正規表現にほとんどのサイト全体を返す必要がありますあまりにも貪欲です。 – Nix

3

あなたはHTMLを解析するために正規表現を使用しています。あなたはこの種の問題だけで終わるので、あなたはすべきではありません。最初に、.*ワイルドカードはできるだけ多くのテキストと一致します。しかし、あなたがそれを修正すると、あなたは挫折の木から別の果物を奪い取るでしょう。代わりに適切なHTMLパーサを使用してください。

7

使用BeautifulSoup

from bs4 import BeautifulSoup 
from urllib2 import urlopen 

f = urlopen("http://www.emergencyassistanceuk.co.uk/list-of-uk-police-stations.html").read() 

bs = BeautifulSoup(f) 

for tag in bs.find_all('span', {'class': 'listlink-police'}): 
    print tag.a['href'] 
+0

ありがとう、ちょうど私が必要としたものでした。 –

+3

「ありがとう、ちょうど私が必要としたことをした。 ["答えの左側にあるチェックボックスの輪郭をクリックすることで最もよく表現されます"](http://stackoverflow.com/faq#howtoask)。 – Johnsyweb

関連する問題