使用Python和Beautiful soup搜索字符串的部分内容

时间:2018-04-18 19:03:38

标签: python parsing beautifulsoup

我目前正在使用Beautiful Soup尝试在网站上找到链接文本然后拉链接。我使用以下代码:

source = requests.get('http://www.website').text
page = BeautifulSoup(source, 'lxml')
for article in page.find_all('article'):
    for a in article.find_all('a', string=['something']) and article.find_all('a', string=['something']):
        link = a['href']
        print(link)

问题是,如果我有确切的链接文本,Beautiful Soup只能找到链接,但这并不总是可行的。有没有办法可以通过链接文本的一部分搜索链接?

1 个答案:

答案 0 :(得分:0)

正则表达式示例:

import re
r = re.compile('something|somethingelse')
for a in article.find_all('a', string=r):
    print(a['href'])

来自你的版本:

from itertools import chain
c = chain(article.find_all('a', string=['something']), 
          article.find_all('a', string=['somethingelse']))
for a in c:
    print(a['href'])

功能示例:

def any_string(s):
    ok = ['something', 'somethingelse']
    return (s in ok)

for a in article.find_all('a', string=any_string):
    print(a['href'])