获取某些链接的href字符串

时间:2015-05-16 06:55:10

标签: python beautifulsoup

使用beautifulSoup,我想获得与某些href相关联的字符串,其中包含“/ genre /”。例如,我使用以下命令获得以下href:

soup.find_all('a', href=True)

输出是:

 <a href="/genre/Animation?ref_=tt_stry_gnr"> Animation</a>,
 <a href="/genre/Adventure?ref_=tt_stry_gnr"> Adventure</a>,
 <a href="/genre/Family?ref_=tt_stry_gnr"> Family</a>,
 <a href="/title/tt0235917/parentalguide?ref_=tt_stry_pg#certification"> See all certifications</a>,
 <a href="/title/tt0235917/parentalguide?ref_=tt_stry_pg" itemprop="url"> View content advisory</a>,

但是,我想选择 only “genre”作为链接并获取输出:

Animation
Adventure
Family

我尝试使用:

import re
imdb_page.find_all('a', {'href': re.compile(r'/genre/\d.*')})

但我得到一个空数组。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

你在正则表达式中有错误,它应该是

>>> for a in soup.find_all('a', {'href': re.compile(r'^/genre/.*')}):
...     print a.text
... 
 Animation
 Adventure
 Family

正则表达式解释

  • ^将模式锚定在字符串的开头,

  • /genre/匹配genre

  • .*匹配任何内容

/genre/\d.*

出了什么问题
  • \d匹配任何数字。那就是你试图匹配/genre/之后的数字(如href="/genre/1qwert")。

    但是在输入字符串中,没有href遵循此模式。

    因此你得到一个空字符串。