2016-03-23 33 views
2

私が掻いているページはlinkです。私はすべてa hrefの論文を入手したいと思います。python-BeautifulSoupでタグの下にあるすべてのノードを取得できません

import urllib2 
import requests 
from bs4 import BeautifulSoup 

response = requests.get('http://ijcai.org/proceedings/2011') 
soup = BeautifulSoup(response.content, 'html.parser') 
page = soup.find('div', class_ ='field-item even') 
tree = [child for child in page.children] 

しかし、私が試したとき:その結果としてのコードは以下の通りですtree[-1]を、私が得た:

<a href="Erratum049.html">Erratum</a> 

確かにそれはちょうどページの半分に敷設されました。いつ私はそのページの残りの部分を取得できませんでしたか?あなたはそれについてのアイデアはありますか?前もって感謝します!

答えて

1

このページのHTMLはであり、整形式ではありませんdifferent parserを使用してください。 html5libは(インストールされてhtml5libが必要です):

soup = BeautifulSoup(response.content, 'html5lib') 

またはlxml(インストールされているlxmlが必要です):今すぐ

soup = BeautifulSoup(response.content, 'lxml') 

tree[-1]は、ページ上の最後の段落のようになります。

<p><a href="http://ijcai.org/Proceedings/11/Papers/507.pdf">Index</a>/2871</p> 

I wあなたもリンクを抽出する方法を改善します:

links = [a["href"] for a in soup.select(".field-item a")] 
関連する問題