2016-09-22 10 views
1

Image to a nest of tagsはBeautifulSoup

とインナーネストされたタグデータを取得私は内側のタグに情報を取得したいが、それは空を返す保ちます。これは私のコードです:

import requests 
from bs4 import BeautifulSoup 

url = "http://www.krak.dk/cafe/s%C3%B8g.cs?consumer=suggest?search_word=cafe" 
r = requests.get(url) 

soup = BeautifulSoup(r.content, 'html.parser') 

genData = soup.find_all("ol", {"class": "hit-list"}) 
print genData 
for infoX in genData: 
    print inforX.text 

私は何が欠けていますか?あなたはそれを持っている場合

答えて

1

HTMLが壊れている、あなたは別のパーサを必要とする、あなたはlxmlのを使用することができます。

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

それともhtml5lib使用:

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

をlxmlのを持っていますlibxmlのような依存関係は、html5libをpipと一緒にインストールすることができます。

In [9]: url = "http://www.krak.dk/cafe/s%C3%B8g.cs?consumer=suggest?search_word=cafe" 

In [10]: r = requests.get(url) 
In [11]: soup = BeautifulSoup(r.content, 'html.parser') 
In [12]: len(soup.find_all("ol", {"class": "hit-list"}))Out[12]: 0 

In [13]: soup = BeautifulSoup(r.content, 'lxml') 
In [14]: len(soup.find_all("ol", {"class": "hit-list"})) 
Out[14]: 1 

In [15]: soup = BeautifulSoup(r.content, 'html5lib') 

In [16]: len(soup.find_all("ol", {"class": "hit-list"})) 
Out[16]: 1 

一つだけhit-listので、あなたがfind_allの代わりに見つけ使用することができますし、また、使用するID soup.find(id="hit-list")を使用することができますもあります。あなたはhtmlのthorughを実行する場合は、w3c's html validatorあなたは多くの問題があることがわかります。

0

文字エンコーディングutf-8で問題が発生しました。ウェブページには特別なデンマーク語の文字「Åå、øø、ææ」が含まれています。おかげでPadraic、私は壊れたアドレスについては知りませんでした。

- * - コーディング:utf- 8 - * - を最初の行に追加すると問題が解決しました。

- *- coding: utf- 8 - *- 
import requests 
from bs4 import BeautifulSoup 

url = "http://www.krak.dk/cafe/søg.cs?consumer=suggest?search_word=cafe" 
r = requests.get(url).content 
soup = BeautifulSoup(r, 'html5lib')