Python - 检索文章是否有作者

时间:2017-08-19 11:21:57

标签: python

我正在尝试编写一个Python脚本来检索文章是否有作者。

我写了以下内容:

s = "https://www.nytimes.com/2017/08/18/us/politics/steve-bannon-trump-white-house.html?hp&action=click&pgtype=Homepage&clickSource=story-heading&module=a-lede-package-region&region=top-news&WT.nav=top-news"

def checkForAuthor():
    r = requests.get(s)
    return "By" in r.text

print(checkForAuthor())

问题是,即使没有作者,函数checkForAuthor也会返回true,因为它会搜索整个HTML内容中的单词。 在没有搜索整个文档的情况下找到作者是否有更好的逻辑?比如在标题内搜索,所以我甚至不必搜索文章内容。我确实需要这样做,以便我在其中搜索的任何网站都会给我结果。不确定那里有什么东西。

2 个答案:

答案 0 :(得分:1)

要解析html并查找所需的数据,您应该使用BeautifulSoup库。

在您的网址的html中,有一个meta标记与作者:

<meta content="By MAGGIE HABERMAN, MICHAEL D. SHEAR and GLENN THRUSH" name="byl"/>

因此,要检查是否有作者,您需要通过其名称(byl)找到它:

import requests
from bs4 import BeautifulSoup

s = "https://www.nytimes.com/2017/08/18/us/politics/steve-bannon-trump-white-house.html?hp&action=click&pgtype=Homepage&clickSource=story-heading&module=a-lede-package-region&region=top-news&WT.nav=top-news"

def checkForAuthor():
    soup = BeautifulSoup(requests.get(s).content, 'html.parser')
    meta = soup.find('meta', {'name': 'byl'})
    return meta is not None

实际上,您还可以使用meta["content"]

获取作者姓名

答案 1 :(得分:0)

从网页抓取数据的一个关键部分是查看网页的HTML源代码以正确获取数据。在您提供的链接中,有以下行包含作者信息。

<meta name="author" content="Maggie Haberman, Michael D. Shear and Glenn Thrush" />
<meta name="byl" content="By MAGGIE HABERMAN, MICHAEL D. SHEAR and GLENN THRUSH" />
<meta property="article:author" content="https://www.nytimes.com/by/maggie-haberman" />
<meta property="article:author" content="https://www.nytimes.com/by/michael-d-shear" />
<meta property="article:author" content="https://www.nytimes.com/by/glenn-thrush" />

还有其他但这些应该有所帮助。要解析这些标记,您可以使用beautiful-soup