如何从印地语报纸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
相关产品推荐
相关产品推荐

