You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从印地语报纸Amar Ujala提取文章URL?

解决Amar Ujala印度新闻页文章URL提取问题

问题根源

你混淆了目标API的用途:https://electionresultapi.amarujala.com/get-article-reactions 这个API是用来获取单篇文章的点赞、评论等互动数据的,需要传入具体文章URL作为请求参数(payload),它本身不会返回文章列表URL。你当前的代码没有传递任何payload,所以只能拿到无效/默认响应。

正确提取文章URL的两种方法

方法1:直接爬取网页HTML解析

Amar Ujala的印度新闻页是服务端渲染的,可以直接请求页面源码,用HTML解析库提取文章链接:

import requests
from bs4 import BeautifulSoup

# 目标页面URL
target_url = "https://www.amarujala.com/india-news?src=mainmenu"
# 模拟浏览器请求头,避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

# 请求页面并设置正确编码
response = requests.get(target_url, headers=headers)
response.encoding = "utf-8"

# 解析HTML提取文章链接
soup = BeautifulSoup(response.text, "html.parser")
article_urls = []

# 根据页面实际DOM结构调整选择器(示例选择器需根据页面实时结构修改)
for article_tag in soup.select("div.news-card a"):
    raw_link = article_tag.get("href")
    if not raw_link:
        continue
    # 补全相对URL为绝对URL
    full_url = raw_link if raw_link.startswith("http") else f"https://www.amarujala.com{raw_link}"
    article_urls.append(full_url)

# 输出提取结果
print("提取到的文章URL:")
for url in article_urls:
    print(url)

方法2:调用官方文章列表API

打开DevTools的Network面板,刷新页面后筛选XHR/Fetch请求,寻找包含文章列表数据的API(通常命名含news、list等关键词)。找到后直接请求该API,即可从返回的JSON数据中批量提取文章URL。

补充:正确使用你提到的互动API

如果后续需要获取单篇文章的互动数据,请求方式如下(需确保Authorization Token有效):

import requests

headers = {
    "Authorization": "Bearer 你的有效Token",
    "Content-Type": "application/json"
}

# 传入具体文章URL作为请求参数
payload = {
    "url": "https://www.amarujala.com/india/具体文章的完整URL"
}

response = requests.post(
    "https://electionresultapi.amarujala.com/get-article-reactions",
    headers=headers,
    json=payload
)

# 打印文章互动数据
print(response.json())

内容的提问来源于stack exchange,提问作者Vinay Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:43:00