2017-01-02 73 views
0

我希望能够刮出链接列表。由于html的结构方式,我无法直接使用BeautifulSoup。从Python中的href标记中删除不需要的html

start_list = soup.find_all(href=re.compile('id=')) 

print(start_list) 

[<a href="/movies/?id=actofvalor.htm"><b>Act of Valor</b></a>, 
<a href="/movies/?id=actionjackson.htm"><b>Action Jackson</b></a>] 

我正在寻找只拉href信息。我正在考虑某种过滤器,我可以将所有粗体代码放入列表中,然后将其从包含上述信息的另一个列表中过滤出来。

start_list = soup.find_all('a', href=re.compile('id=')) 

start_list_soup = BeautifulSoup(str(start_list), 'html.parser') 

things_to_remove = start_list_soup.find_all('b') 

的想法是能够遍历things_to_remove和START_LIST删除其内容全部出现

+0

发布您想要的输出。 –

回答

0
start_list = soup.find_all(href=re.compile('id=')) 

href_list = [i['href'] for i in start_list] 

href是标签的attrbute,如果使用find_all GET一堆标签,只是遍历它并使用tag['href']来访问该属性。

要理解为什么使用[],您应该知道标记的属性存储在字典中。 Document

标签可以具有任何数量的属性。标签<b class="boldest"> 具有其值“大胆”的属性“类”。

tag['class'] 
# u'boldest' 

您可以直接访问该字典作为.attrs:您可以通过处理标签像一本字典访问 标签的属性

tag.attrs 
# {u'class': u'boldest'} 

列表理解很简单,你可以参考这个PEP,在这种情况下,它可以在for循环中完成:

href_list = [] 
for i in start_list: 
    href_list.append(i['href']) 
+0

这正是我需要的,你可以向我解释列表理解吗? –

+0

具体来说:这部分我['href']为什么它在括号内? –

+0

@ Chace Mcguyer请接受此答案来关闭此问题。 –

相关问题