Python 爬取人民日报文章:代码优化和错误解决
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}')
使用方法:
- 确保已安装 requests 和 json 库。
- 运行代码。
- 输入开始时间、结束时间和关键词。
- 代码将根据输入的关键词爬取指定时间范围内的文章,并将文章下载到 '文章' 文件夹中。
- 代码会输出爬取到的文章数量和正确性比率。
注意:
- 此代码仅供学习和研究使用,请勿用于商业用途。
- 请遵守相关法律法规,尊重网站的使用规则。
- 请注意爬取速度,避免给网站服务器造成负担。
原文地址: https://www.cveoy.top/t/topic/qptH 著作权归作者所有。请勿转载和采集!