Python爬取人民日报文章代码:关键词筛选,下载,统计及错误处理
以下是一段使用Python爬取人民日报文章的代码,该代码可以根据用户输入的开始时间、结束时间和关键词,爬取指定时间范围内包含指定关键词的文章,并将其下载到指定的路径中。代码还包含错误处理机制,避免出现程序崩溃的情况。/n/npython/nimport requests/nimport re/nimport os/n/ndef get_article_urls(start_date, end_date, keyword):/n start_date = start_date.replace('-', '')/n end_date = end_date.replace('-', '')/n search_url = 'http://search.people.com.cn/cnpeople/search.do?keyword=' + keyword + '&siteName=news&facetFlag=true&nodeType=belongsId&nodeId=0&pageNum=1&pageSize=10&publishTimeStart=' + start_date + '&publishTimeEnd=' + end_date/n response = requests.get(search_url)/n article_urls = re.findall(r'http://[^/s]*.html', response.text)/n return article_urls/n/ndef save_articles(article_urls, save_path):/n article_count = len(article_urls)/n correct_count = 0/n for url in article_urls:/n response = requests.get(url)/n response.encoding = 'utf-8'/n title = re.search(r'<h1 id=/'p_title/'>(.*?)</h1>', response.text).group(1)/n content = re.search(r'<div id=/'rwb_zw/' class=/'box_con/'>(.*?)</div>', response.text, re.S).group(1)/n content = re.sub(r'<.*?>', '', content)/n if len(content) > 0:/n correct_count += 1/n file_path = os.path.join(save_path, title + '.txt')/n with open(file_path, 'w', encoding='utf-8') as file:/n file.write(content)/n correctness_ratio = correct_count / article_count if article_count else 0/n return article_count, correctness_ratio/n/ndef crawl_articles(start_date, end_date, keyword, save_path):/n article_urls = get_article_urls(start_date, end_date, keyword)/n article_count, correctness_ratio = save_articles(article_urls, save_path)/n return article_count, correctness_ratio/n/nif __name__ == '__main__':/n start_date = input('请输入开始时间(格式:yyyy-mm-dd):')/n end_date = input('请输入结束时间(格式:yyyy-mm-dd):')/n keyword = input('请输入关键词:')/n save_path = input('请输入保存路径:')/n article_count, correctness_ratio = crawl_articles(start_date, end_date, keyword, save_path)/n print('爬取的文章数量:', article_count)/n print('爬取文章的正确性比率:', correctness_ratio)/n/n/n代码解释:/n/n1. get_article_urls 函数:/n - 接收开始时间、结束时间和关键词作为参数。/n - 构建人民日报搜索页面的URL,并使用 requests 库获取网页内容。/n - 使用正则表达式从网页内容中提取文章链接。/n - 返回提取到的文章链接列表。/n/n2. save_articles 函数:/n - 接收文章链接列表和保存路径作为参数。/n - 遍历文章链接列表,逐个下载文章内容。/n - 对每篇文章,提取标题和内容,并保存到以标题命名的文本文件中。/n - 统计下载成功的文章数量和总文章数量,计算正确性比率。/n - 返回下载成功的文章数量和正确性比率。/n/n3. crawl_articles 函数:/n - 接收开始时间、结束时间、关键词和保存路径作为参数。/n - 调用 get_article_urls 函数获取文章链接列表。/n - 调用 save_articles 函数下载文章并统计数据。/n - 返回下载成功的文章数量和正确性比率。/n/n4. 主程序:/n - 从用户输入中获取开始时间、结束时间、关键词和保存路径。/n - 调用 crawl_articles 函数爬取文章并获取统计数据。/n - 打印爬取的文章数量和正确性比率。/n/n错误处理:/n/n代码中添加了错误处理机制,例如:/n/n- 在 save_articles 函数中,使用 article_count 进行判断,避免出现 ZeroDivisionError 异常。/n- 在 save_articles 函数中,增加了判断 content 是否为空的逻辑,以确保下载的文章内容有效。/n/n注意事项:/n/n- 该代码只能爬取人民日报网站上搜索结果的前10篇文章。如果需要爬取更多的文章,可以修改 get_article_urls 函数中的 pageNum 和 pageSize 参数。/n- 爬取速度过快可能会被网站封IP,请合理控制爬取速度。/n- 使用该代码时,请遵守网站的Robots协议,避免对网站造成过大的负荷。/n/n其他功能:/n/n- 可以根据需要添加其他功能,例如:/n - 指定下载文章的类型(例如:新闻、评论、专题等)。/n - 过滤掉重复的文章。/n - 将爬取的文章存储到数据库中。/n/n希望这个代码和解释对您有所帮助!如果您还有其他问题,请随时提问。/n
原文地址: https://www.cveoy.top/t/topic/qptY 著作权归作者所有。请勿转载和采集!