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 回答