Python-每天从没有任何Feed的网站抓取新闻文章

时间:2018-02-19 11:35:25

标签: python web-scraping beautifulsoup feed news-feed

我可以使用Python Beautiful Soup模块从站点提要URL中提取新闻项。但是假设该网站没有提要,我需要每天从中提取新闻文章,就好像它有一个提要。

网站https://www.jugantor.com/没有Feed。即使通过谷歌搜索,我也没有找到任何。使用以下代码段,我尝试从站点中提取链接。结果显示“http://epaper.jugantor.com”等链接。 但网站上显示的新闻项目也未包含在提取的链接中。

我的代码:

from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import re


def getLinks(url):

    USER_AGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'
    request = Request(url)
    request.add_header('User-Agent', USER_AGENT)
    response = urlopen(request)
    content = response.read().decode('utf-8')
    response.close()

    soup = BeautifulSoup(content, "html.parser")
    links = []

    for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
        links.append(link.get('href'))

    return links

print(getLinks("https://www.jugantor.com/"))

显然这不符合预期目的。我每天都需要“https://www.jugantor.com/”的所有新闻文章链接,就像我从Feed中获取它们一样。我可以使用cron作业每天运行一个脚本。但挑战仍然是确定在特定日期发布的所有文章然后提取它们。

我该怎么做?任何python模块或算法等?

NB:存在一个类似的问题here,它没有提到作为解析源的Feed。似乎OP有关从列出的页面中提取文章它们作为文本快照。与该问题不同,我的问题主要集中在没有任何Feed的网站上。然而,那里存在的唯一答案并没有解决这个问题。

1 个答案:

答案 0 :(得分:1)

我不确定理解正确,但我看到的第一件事是{'href': re.compile("^http://")}

您将错过所有https和相关链接。可以在这里跳过亲属链接而没有任何问题(我猜......),但显然不是https个。首先是:

{'href': re.compile("^https?://")}

然后,为了避免每天下载和解析相同的URL,您可以提取文章的ID(在https://www.jugantor.com/lifestyle/19519/%E0%...A7%87 id为19519),将其保存在数据库中,因此首先验证是否在抓取页面之前存在id。

最后,我不确定这会有用,但是这个网址https://www.jugantor.com/todays-paper/让我觉得你应该只能找到今天的新闻。