Python 爬取人民日报文章:代码优化和错误解决

本代码使用 Python 爬取人民日报网站的文章,并根据用户输入的关键词进行筛选下载。代码解决了常见的 SyntaxError 问题,并包含了文章数量统计和正确性比率计算。

问题描述:

在爬取人民日报文章时,经常会遇到类似 'File "C:\Users\Administrator\Desktop\1\q.py", line 57 f.write(f"标题:{article['title']} ^ SyntaxError: EOL while scanning string literal' 的错误,这是由于在 f 字符串中的换行符引起的。

解决方法:

在换行符之前添加一个反斜杠来解决这个问题。

代码:

import requests
import json

# 输入开始时间、结束时间和关键词
start_time = input('请输入开始时间(格式:yyyy-mm-dd):')
end_time = input('请输入结束时间(格式:yyyy-mm-dd):')
keyword = input('请输入关键词:')

# 构造请求参数
params = {
    'keyword': keyword,
    'pd': start_time + '~' + end_time,
    'page': 1,
    'pageSize': 100,
    'type': 'news',
}

# 发送请求,获取文章列表
response = requests.get('http://search.people.com.cn/api-search/elasticSearch/search', params=params)
data = json.loads(response.text)
total = data['count']
articles = data['result']

# 下载文章
download_count = 0
for article in articles:
    article_url = article['url']
    article_title = article['title']
    article_response = requests.get(article_url)
    with open(f'文章/{article_title}.html', 'w', encoding='utf-8') as f:
        f.write(article_response.text)
    download_count += 1

# 计算正确性比率
correct_count = sum(1 for article in articles if keyword in article['content'])
accuracy = correct_count / download_count if download_count > 0 else 0

# 输出结果
print(f'共爬取到{download_count}篇文章')
print(f'正确性比率:{accuracy}')

使用方法:

  1. 确保已安装 requests 和 json 库。
  2. 运行代码。
  3. 输入开始时间、结束时间和关键词。
  4. 代码将根据输入的关键词爬取指定时间范围内的文章,并将文章下载到 '文章' 文件夹中。
  5. 代码会输出爬取到的文章数量和正确性比率。

注意:

  • 此代码仅供学习和研究使用,请勿用于商业用途。
  • 请遵守相关法律法规,尊重网站的使用规则。
  • 请注意爬取速度,避免给网站服务器造成负担。
Python 爬取人民日报文章:代码优化和错误解决

原文地址: https://www.cveoy.top/t/topic/qptH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录