2015-12-23 23 views
1

使用BeautifulSoup4的python3我想刮在divs內的嵌套元素的文本。但首先,我想提取嵌套在div中元素中的鏈接。我想刮在多個div內的嵌套元素的文本

我如何去抓住一個鏈接LINK-I-WANT.COM和嵌套在像這樣的圖像IMAGE-I-WANT.JPG

<section class="LINK_CLASS"> 
    <div class="LINK_CLASS2"> 
     <div class="LINK_CLASS3"> 
      <span class="#">random text</span> 
      <a href="LINK-I-WANT.COM"> 
       <img src="IMAGE-I-WANT.JPG" class="IMG_CLASS"/> 
      </a> 
     </div> 
    </div> 
</section> 

所有環節刮將被保存到列表和,該腳本將通過每鏈接,找到一個長期的方針:

<div class=「CLASS_ONE」> 
    <div class=「CLASS_TWO」> 
     <ul> 
     <li><span>FOO</span>BAR</li> 
     <li><span>FOO2</span>BAR2</li> 
     <li><span>FOO3</span>BAR3</li> 
     <li><span>FOO4</span>BAR4</li> 
     </ul> 
    </div> 
</div> 

使用上面的例子,我將如何訪問FOO#BAR#這樣,當我遍歷的每一個環節,找到個e每頁有的信息(FOO#& BAR#),我可以將它打印到生成的文本文件中,爲每個鏈接?

如果我沒有意義,請原諒我。這裏是我對代碼的嘗試,我非常感謝任何幫助。

def spider(max_pages): 
    page = 1 
    subs = [] 
    print("Getting links...") 
    while page <= max_pages: 
     url = "http://example.com" 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 
     for link in soup.findAll("section",{"class":"LINK_CLASS"}): 

這是我卡住......如果<a>標籤有一類,這將是一個更容易的部分,不幸的是,<a>標籤只是有一個HREF,所以我必須嘗試和訪問它通過指向其他元素。我不知道如何查找元素中的元素,有人可以幫助我嗎?

回答

1

在這種情況下,有多種方法可以找到所需的鏈接。我會做一個CSS selector

for link in soup.select("section.LINK_CLASS > div.LINK_CLASS2 > div.LINK_CLASS3 > a[href]"): 
    print(link["href"]) 

.將檢查一類的存在,>是直接父子關係的檢查。換句話說,我們定位具有href屬性直接位於直接位於與直接位於該元件section內側LINK_CLASSLINK_CLASS2div元件下LINK_CLASS3div元素下的a元件。

+0

非常感謝您的先生:) –