gpt4 book ai didi

python - 匹配不需要的链接

转载 作者:行者123 更新时间:2023-12-01 05:01:00 25 4
gpt4 key购买 nike

我编写了一个库,它通过从维基百科提取 href 链接并保存它们来创建持久层。我意识到我有一个我不关心的链接,该链接标记为 /wiki/Cookbook:Table_of_Contents

模拟 !~(不匹配)并保持 Pythonic 的最佳方式是什么?

为了更好的上下文和理解,我会在 ruby​​ 中像这样解决这个问题:

if link =~ %r{^/wiki/Cookbook} && link !~ /Table_of_Contents/

我的代码:

def fetch_links(self, proxy):
if not self._valid_proxy(proxy):
raise ValueError('invalid proxy address: {}'.format(proxy))
self.browser.set_proxies({'http': proxy})
page = self.browser.open(self.wiki_recipes)
html = page.read()

link_tags = SoupStrainer('a', href=True)
soup = BeautifulSoup(html, parse_only=link_tags)
recipe_regex = r'^\/wiki\/Cookbook'
return [link['href'] for link in soup.find_all('a') if
re.match(recipe_regex, link['href'])]

最佳答案

有多种方法可以排除不需要的链接。

一种选择是 pass a functionhref 参数值中:

soup.find_all('a', href=lambda x: 'Table_of_Contents' not in x)

这会过滤掉 href 属性内没有 Table_of_Contentsa 标记。

示例:

from bs4 import BeautifulSoup

data = """
<div>
<a href="/wiki/Cookbook:Table_of_Contents">cookbook</a>
<a href="/wiki/legal_link">legal</a>
<a href="http://google.com">google</a>
<a href="/Table_of_Contents/">contents</a>
</div>
"""

soup = BeautifulSoup(data)
print [a.text for a in soup.find_all('a', href=lambda x: 'Table_of_Contents' not in x)]

打印:

[u'legal', u'google']

关于python - 匹配不需要的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com