0

私はチュートリアルをほぼ忠実に実行しました。各警察署に関する情報を含む特定のページへのすべてのリンクをスクレイパーにスクレイピングしてもらいたいのですが、ほとんどサイト全体が返されます。

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()
4

3 に答える 3

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']
于 2012-04-09T19:36:39.603 に答える
3

HTML の解析に正規表現を使用しています。この種の問題だけで終わるので、そうすべきではありません。まず、.*ワイルドカードは可能な限り多くのテキストに一致します。しかし、それを修正すると、フラストレーションの木から別の果物を摘み取ることができます. 代わりに、適切な HTML パーサーを使用してください。

于 2012-04-09T19:35:53.980 に答える
-1

そのクラスには 1.6k 以上のリンクがあります。

正しく機能していると思います...なぜ機能していないと思いますか?


そして、間違いなくBeautiful Soupを使用する必要があります。それはばかげてシンプルで非常に使いやすいです。

于 2012-04-09T19:32:53.207 に答える