2017-08-04 308 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']) 
相关问题