2017-08-04 42 views
0

我有一個超鏈接列表,格式爲< a href =「/ linkaddress」</a>(添加空格以顯示)。如何選擇bs4.element.Tag的一部分,是否必須將其轉換爲字符串?

不幸的是,格式沒有完整的地址,所以我想通過將兩個字符串拼接在一起來添加網址的開頭。我有一些看起來像這樣的代碼;

import requests 
from bs4 import BeautifulSoup 

r_2 = requests.get('http://www.website.com/linkaddress/') 

soup = BeautifulSoup(r_2.text, 'html.parser') 

links = soup.find_all('a') 

links_list = [] 

for link in links: 
    links_list.append(link) 

link_end = links_list[9:-4] 
# select information between 9th position and 4th last position 
link_start = 'http://www.website.com/' 
master_links = link_start + link_end 

print master_links 

嘗試,因爲它實際上不是一個字符串選擇剛剛從超鏈接地址時,我遇到了一個問題,它是一個bs4.element.Tag。有沒有辦法只能從列表'links_list'中的每個條目中選擇鏈接地址?或者我必須將其轉換爲字符串?

回答

0

每個節點都有一個屬性'attrs',它是一個包含在該節點上定義的所有屬性的Python字典。

因此,地址可以被檢索爲:

link.attrs['href'] 
1

其實你並不需要指定attrs,只是簡單: link['href']

attrs在以下情況良好,當你不知道如果href出現在某些標籤的屬性中:

if 'href' in link.attrs: 
    print(link['href']) 
相關問題