用python爬取网站文献、新闻报道内容,并保存为文本
最近同学让我帮忙爬取点工程类的事故案例,目标网站:http://www.mkaq.org/sggl/shigual/,对于java程序员的我,对python还不太熟悉,不过python也很容易学的,主要是学会根据自己需求,用各种库就行了。下面记录一下我从安装环境到代码运行的过程:
一、安装python环境
安装python我是参考的这篇文章,写的很详细,python3环境安装。
二、安装需要用到的python的库
参考这个常用python库安装教程,此爬虫代码只用到了下列这几个库,参照教程安装即可:
requests
selenium
chromedriver
lxml
beautifulsoup4 (注意:python2版本用的是beautifulsoup,但是3.版本用的是beautifulsoup4 ,注意版本不同,此处用的为python3.8)
三、代码编写
环境准备好以后,开始编写代码:
import os import io import sys import requests from bs4 import BeautifulSoup # 改变标准输出的默认编码 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030') def urlBS(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } resp = requests.get(url, headers=headers) html = resp.content.decode('utf-8') soup = BeautifulSoup(html, 'html.parser') return soup def main(url): soup = urlBS(url) # 数据保存的目录( os.getced()创建文件夹) path = os.getcwd() + u'/爬取的文章/' if not os.path.isdir(path): # 判断是否有这个文件夹 os.mkdir(path) # for new in soup.select('.news-box'): for new in soup.select('.imgr'): if len(new.select('h2')) > 0: # 获取文章列表连接 # article_list_url = 'https:' + new.select('a')[0]['href'] #获取首页数据,不需要添加地址前缀 # article_list_url = new.select('a')[0]['href'] #获取第二页以后的数据,需要添加地址 article_list_url = 'http://www.mkaq.org' + new.select('a')[0]['href'] # 输出文章列表连接 # print(article_ list_ url) # 获取文章标题 # title = ''.join(new.select('h4')[0].text.split()) title = ''.join(new.select('h2')[0].text.split()) # 输出文章标题 print(title) # 请求每篇文章 result = urlBS(article_list_url) article = [] # 获取article 中被p包含的内容去除最后一个p标签即责任编辑 for v in result.select(' .article_content p')[:-1]: # 将内容添加到列表中, 并去除两边特殊字符 article.append(v.text.strip()) # 将列表中内容以换行连接 author_info = '\n'.join(article) # 输出文章内容 # print(author_ info) # 保存的文件格式为txt filename = path + title + '.txt' # 输出保存路径 print(filename) new = open(filename, 'w', encoding="utf- 8") # 写入标题 new.write(title + '\n\n') # 写入内容 new.write(author_info) # 关闭 new.close() if __name__ == '__main__': # 目标网址 # firsurl = 'http://www.mkaq.org/sggl/shigual/' #获取第三页数据,article_list_url也要同步修改 firsurl = 'http://www.mkaq.org/sggl/shigual/index_3.shtml' main(firsurl) print('执行完成!')
四、运行效果如下图所示
在获取默写页面数据时,个别文章可能会报错,不用管,忽略即可。
若要获取其他网站的内容,参考网站源码的标签列表,做对应修改即可。
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构