如何通过匹配BeautifulSoup中href属性中的文本来获取元素

时间:2016-03-03 08:59:59

标签: javascript python html beautifulsoup

网站有几个href标签,我通过文本解析它。 例如,

<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=100&s=111', 'N')">test1</a>
<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=200&s=111', 'N')">test2</a>
<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=300&s=111', 'N')">test3</a>"

我用过

bs = getBeautifulSoupRequests(board_url)
result = bs.findAll('a', href=True, text='test1')

和结果

"<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=100&s=111', 'N')">test1</a>

但我希望得到如下结果

/board/list.do?boardID=1111&m=100&s=111

我该怎么办?

1 个答案:

答案 0 :(得分:1)

你非常接近。您只需获取onclick属性的值并从中提取链接。你可以使用正则表达式模式来匹配链接,或者使用快速而脏的split(),如下所示:

from bs4 import BeautifulSoup

html = '''<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=100&s=111', 'N')">test1</a>
<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=200&s=111', 'N')">test2</a>
<a href="#goUrl" onClick="javascript:goUrl('/board/list.do?boardID=1111&m=300&s=111', 'N')">test3</a>"'''

soup = BeautifulSoup(html)
for t in soup.find_all('a', href=True, onclick=True, text='test1'):
    onclick = t['onclick'].split("'")[1]
    print(onclick)

<强>输出

/board/list.do?boardID=1111&m=100&s=111