我正在尝试查找所有包含作者的元标记。如果我有特定的键和正则表达式值,它可以工作。当两者都是正则表达式时,它将不起作用。是否可以提取页面中包含“ author”关键字的所有元标记?
这是我写的代码。
from bs4 import BeautifulSoup
page = requests.get(url)
contents = page.content
soup = BeautifulSoup(contents, 'lxml')
preys = soup.find_all("meta", attrs={re.compile('.*'): re.compile('author')})
编辑:
为了澄清起见,我要专门解决的问题是值“ author”是否映射到任何键。正如我在各种示例中看到的那样,该键可以是“ itemprop”,“ name”甚至“ property”。基本上,我的问题是拉取所有具有作者作为值的元标记,而不管该值具有什么键。
有两个例子:
<meta content="Jami Miscik" name="citation_author"/>
<meta content="Will Ripley, Joshua Berlinger and Allison Brennan, CNN" itemprop="author"/>
<meta content="Alison Griswold" property="author"/>
最佳答案
如果要查找citation_author
或author
,则可能会结合使用soup.select()
和正则表达式:
from bs4 import BeautifulSoup
import re
# some test string
html = '''
<meta name="author" content="Anna Lyse">
<meta name="date" content="2010-05-15T08:49:37+02:00">
<meta itemprop="author" content="2010-05-15T08:49:37+02:00">
<meta rel="author" content="2010-05-15T08:49:37+02:00">
<meta content="Jami Miscik" name="citation_author"/>
<meta content="Will Ripley, Joshua Berlinger and Allison Brennan, CNN" itemprop="author"/>
<meta content="Alison Griswold" property="author"/>
'''
soup = BeautifulSoup(html, 'html5lib')
rx = re.compile(r'(?<=)"(?:citation_)?author"')
authors = [author
for author in soup.select("meta")
if rx.search(str(author))]
print(authors)
关于python - Beautifulsoup在元标记中找到特定值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44527583/