2017-08-11 138 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