Python每天从没有任何feed的站点抓取新闻文章

2024-04-26 18:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用PythonBeautiful Soup模块从站点提要URL中提取新闻条目。但是假设这个站点没有feed,我需要每天从它提取新闻文章,就像它有feed一样。在

站点https://www.jugantor.com/没有源。即使在谷歌上搜索,我也没有找到。通过下面的代码片段,我试图从站点中提取链接。结果显示了诸如“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/'的所有新闻文章链接,就好像我从提要中获取它们一样。我可以使用cron作业每天运行脚本。但挑战仍然在于确定某一天发表的所有文章,然后提取它们。在

我怎么能做到呢?有python模块或算法吗?在

N.B:存在一个类似的问题here,它没有提到要进行解析的提要来源。它似乎那里的操作员关心的是从一个页面中提取文章,该页面将它们列为文本快照。与这个问题不同,我的问题集中在那些没有任何提要的网站上。然而,现有的唯一答案并不能解决这个问题。在


Tags: 模块代码httpsimportcom站点链接response
1条回答
网友
1楼 · 发布于 2024-04-26 18:27:18

我不确定是否理解正确,但我首先看到的是{'href': re.compile("^http://")}。在

您将错过所有https和相关链接。亲戚链接可以跳过这里没有任何问题(我猜…),但显然不是https的问题。所以第一件事:

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

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

最后一件事,我不确定这是否有用,但是这个url https://www.jugantor.com/todays-paper/让我认为您应该只能找到今天的新闻。在

相关问题 更多 >