1

HTMLの解析にpythonとbeautifulsoupを使用しています。

私は次のコードを使用しています:

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 のパスウェイがあることも重要です。しかし、他の行はページの下部にある「リンクを表示」に依存しているため、すべてのリンクを取得することはできません。

では、その URL からすべてのリンク (107 個のリンク) を取得するにはどうすればよいでしょうか?

4

2 に答える 2

2

あなたの問題は8行目content = url.read()です。あなたは実際にウェブページを読んでいるのではなく、実際には何もしていないだけです (どちらかといえば、エラーが発生するはずです)。

main_urlを読みたいので、8 行目を次のように変更します。

content = main_url.read()

また、別のエラーがありprint a[href]ます。href文字列でなければならないので、次のようにする必要があります。

print a['href']
于 2013-02-17T05:30:40.567 に答える
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')

それでうまくいくはずです。

于 2013-02-17T03:43:05.677 に答える