2014-09-25 33 views
0

我想提取數據:如何使用Python從HTML中提取它?

<div class="address"><h3>Text1</h3><div class="adr">Text2</div></div> 

我想打印文本1和文本。

我試試這個:

br = mechanize.Browser() 
html = """<div class="address"><h3></h3><div class="adr"></div></div>""" 
soup = BeautifulSoup(html) 
br.addheaders = [('User-agent', 'Firefox')] 
br.open("http://de.fakenamegenerator.com/gen-male-gr-gr.php") 
adress = soup.findAll('div', attrs={ "class" : "adr"}) 

print len(adress) 

我得到的結果:

1 

... 

謝謝!

回答

1

您需要,首先,使用mechanize發出請求,然後才通過responseBeautifulSoup解析:

from bs4 import BeautifulSoup 
import mechanize 

br = mechanize.Browser() 
br.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.122 Safari/537.36')] 
br.open("http://de.fakenamegenerator.com/gen-male-gr-gr.php") 

soup = BeautifulSoup(br.response()) 
address = soup.find('div', attrs={"class": "address"}) 

print address.h3.text.strip() 
print address.find('div', attrs={'class': 'adr'}).text.strip() 

打印:

Jan Amsel 
Invalidenstrasse 6567159 Friedelsheim 
+0

感謝,對於ADRESS工作,但我沒有得到h3。 – Jerome 2014-09-25 00:13:36

+0

非常感謝!那是我正在尋找的! – Jerome 2014-09-25 00:17:49

+0

你能告訴我更多..試圖讓網站上的電話號碼。和text.strip()說:print tel.find('span',attrs = {「class」:「value」})。text.strip() AttributeError:'NoneType'對象沒有屬性'text'.. ...做它沒有文字,因爲它是數字? – Jerome 2014-09-25 00:25:46