Python字符串范围(解析HTML)
在Python中,我复制了一网页,想要找出所有出现的 <a href=
。
我正在使用urllib2,下面是我的设置:
import urllib2
response = urllib2.urlopen("http://python.org")
html = response.read()
要完成这个任务,最好的方法是什么呢?我该如何从一个存储了整个网页的变量中选择一段字符串文本呢?
5 个回答
1
听起来你需要一个HTML解析器。可以看看Beautiful Soup这个工具。我不建议使用正则表达式,因为那样会变得非常复杂,而且容易出错。
3
这个任务肯定需要用到Beautiful Soup这个工具:
>>> from BeautifulSoup import BeautifulSoup
>>> import urllib2
>>> page = urllib2.urlopen('http://stackoverflow.com/')
>>> soup = BeautifulSoup(page)
>>> links = soup.html.body.findAll('a', limit=10)
>>> for i, link in enumerate(links):
... print i, ':', link.text, ' -- ', link['href']
...
0 : Stack Exchange -- http://stackexchange.com
1 : log in -- /users/login
2 : blog -- http://blog.stackoverflow.com
3 : careers -- http://careers.stackoverflow.com
4 : chat -- http://chat.stackoverflow.com
5 : meta -- http://meta.stackoverflow.com
6 : about -- /about
7 : faq -- /faq
8 : Stack Overflow -- /
9 : Questions -- /questions
首页上有很多链接;我把输出限制在前十个!
4
在Python中解析HTML时,我比较喜欢用BeautifulSoup这个工具。这是因为如果你想找网页中的链接,而不仅仅是简单地查找