2017-08-11 141 views
0

好吧,我目前使用python beautifulsoup從html文件輸出特定的行,因爲html包含多個相同的div類,它會輸出每個div包含相同的類,例如,這python beautifulsoup按行打印#

內容:

<div class=border>aaaa</a> 
<div class=border>example</a> 
<div class=border>runrunrun</a> 

OUTPUT:

<div class=border>aaaa</a> 
<div class=border>example</a> 
<div class=border>runrunrun</a> 

現在我只想DIV類邊界#2,

<div class=border>example</a> 

現在,如果我鉻內查看源,就會顯示在數行的內容,所以第1行中將包含

<div class=border>aaaa</a> 

&線2將包含

<div class=border>example</a> 

是有可能使用美麗的湯通過編號行輸出?

+0

使用'soup.find_all('div',{'class':'border'})'並選擇你需要的項目。 –

+0

這將不得不手動完成..我希望它自動完成,再加上有100個相同的元素具有相同的名稱..與100個相同的請求..我將不得不這樣做100次的時代大聲笑。 – user3255841

+1

這不是我的意思。例如:如果您需要第二個'div',請使用:'soup.find_all('div',{'class':'border'})[1]' –

回答

0

find_all返回一個列表,所以你可以用[1]來索引它以得到第二個元素。

from bs4 import BeautifulSoup 

html_doc = """<div class=border>aaaa</a> 
<div class=border>example</a> 
<div class=border>runrunrun</a>""" 

soup = BeautifulSoup(html_doc, 'html.parser') 

soup.find_all(class_="border")[1] 

回報

<div class="border">example</div> 
+0

我已經試過把這個插入到我的腳本中,但有問題https://stackoverflow.com/questions/45629540/python-urllib2-beautifulsoup – user3255841

0

如果有清單,說由soup.find_all ...產生的200個元素。如果列表被稱爲div_list,你可能只是做一個指數環(您想指數1,4,7等)

count = 1 
while True: 
    try: 
     print(div_list[count]) 
     count+=3 
    except: 
    # happens because of index error 
     break 

或者更短:

count = 1 
while count<= len(div_list): 
    print(div_list[count]) 
    count+=3