我正在使用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个链接)?
答案 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')
这应该让你去。