从显示更多链接获取html的所有链接

时间:2013-02-17 03:40:14

标签: python html beautifulsoup

我正在使用python和beautifulsoup进行html解析。

我使用以下代码:

from BeautifulSoup import BeautifulSoup
import urllib2
import re

url = "http://www.wikipathways.org//index.php?query=signal+transduction+pathway&species=Homo+sapiens&title=Special%3ASearchPathways&doSearch=1&ids=&codes=&type=query"

main_url = urllib2.urlopen(url)
content = main_url.read()
soup = BeautifulSoup(content)

for a in soup.findAll('a',href=True):
    print a[href]

但我没有得到如下输出链接:     http://www.wikipathways.org/index.php/Pathway:WP26

并且还有一些东西是有107条路径。但我不会得到所有链接,因为其他lins依赖于页面底部的“显示链接”。

那么,如何从该网址获取所有链接(107个链接)?

2 个答案:

答案 0 :(得分:2)

您的问题是第8行,content = url.read()。你实际上并没有阅读网页,实际上你什么都不做(如果有的话,你应该收到错误)。

main_url是您想要阅读的内容,因此请将第8行更改为:

content = main_url.read()

您还有另一个错误print a[href]href应该是一个字符串,所以它应该是:

print a['href']

答案 1 :(得分:1)

我建议使用lxml更快更好地解析html值得投入时间来学习它。

from lxml.html import parse
dom = parse('http://www.wikipathways.org//index.php?query=signal+transduction+pathway&species=Homo+sapiens&title=Special%3ASearchPathways&doSearch=1&ids=&codes=&type=query').getroot()
links = dom.cssselect('a')

这应该让你去。