【爬虫】单个网站链接爬取文献数据:标题、摘要、作者等信息

源码链接: https://github.com/Niceeggplant/Single—Site-Crawler.git

一、项目概述

从指定网页中提取文章关键信息的工具。通过输入文章的 URL,程序将自动抓取网页内容

二、技术选型与原理

  1. requests:这是 Python 中用于发送 HTTP 请求的常用库。它能够模拟浏览器向网页服务器发送请求,并获取网页的 HTML 文本内容。在本项目中,我们利用它来获取目标文章网页的源代码,为后续的信息提取提供基础数据。其使用方法非常简单,只需调用 requests.get() 方法,并传入目标 URL 和可选的请求头信息即可。例如:
import requestsurl = "https://example.com/article"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)
html_text = response.text

这里设置请求头中的 User-Agent 是为了模拟浏览器访问,避免一些网站对非浏览器请求的限制。

  1. BeautifulSoup:该库主要用于解析 HTML 和 XML 文档。它能够将复杂的网页结构转换为易于操作的 Python 对象,方便我们通过标签、类名、ID 等属性定位和提取网页中的元素。在本项目中,我们使用它来解析 requests 库获取到的 HTML 文本,以提取文章的各种信息。使用时,首先需要创建一个 BeautifulSoup 对象,例如:
from bs4 import BeautifulSoupsoup = BeautifulSoup(html_text, 'html.parser')

这里的 html.parser 是 Python 内置的 HTML 解析器,也可以根据需要选择其他更强大的解析器,如 lxml 解析器。

三、代码实现步骤

  1. 定义提取函数
import requests
from bs4 import BeautifulSoupdef fetch_article_info(url):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}try:response = requests.get(url, headers=headers)response.raise_for_status()  soup = BeautifulSoup(response.text, 'html.parser')

这里定义了 fetch_article_info 函数,它接受一个文章 URL 作为参数,并在函数内部进行请求和解析的操作。

  1. 提取标题
        title_element = soup.find('h1')title = title_element.get_text().strip() if title_element else '未找到'

通过 soup.find('h1') 查找网页中的 <h1> 标签,通常文章标题会在这个标签内。如果找到,则获取其文本内容并去除首尾空格;如果未找到,则将标题设为 未找到

  1. 提取作者
        authors = []author_elements = soup.find_all('div', class_='authors')if not author_elements:author_elements = soup.find_all('input', id='authors')for author_element in author_elements:author_links = author_element.find_all('a')for link in author_links:authors.append(link.get_text().strip())authors = ', '.join(authors) if authors else '未找到'

首先尝试通过查找类名为 authors<div> 标签来获取作者信息,如果未找到,则查找 idauthors<input> 标签。然后遍历找到
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

解决无法远程管理Windows Server服务器核心安装

问题 有时&#xff0c;人们会为了节省运算资源&#xff0c;例如运行Hyper-V虚拟机&#xff0c;而选择Windows Server核心安装&#xff0c;即无图形化界面。这时&#xff0c;我们就只能通过Powershell命令对其进行操控&#xff0c;或为了获得图形化界面而使用远程服务器管理工具…

【计算机网络】lab7 TCP协议

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…

JavaRestClient 客户端初始化+索引库操作

1. 介绍 ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。 Elasticsearch目前最新版本是8.0&#xff0c;其java客户端有很大变化。不过大多数企业使用的还是8以下版本 2. 客户端初始化 在elastic…

【JVM-2.2】使用JConsole监控和管理Java应用程序:从入门到精通

在Java应用程序的开发和运维过程中&#xff0c;监控和管理应用程序的性能和资源使用情况是非常重要的。JConsole是Java Development Kit&#xff08;JDK&#xff09;自带的一款图形化监控工具&#xff0c;它可以帮助开发者实时监控Java应用程序的内存、线程、类加载以及垃圾回收…

基于html5实现音乐录音播放动画源码

源码介绍 基于html5实现音乐录音播放动画源码是一款类似Shazam的UI&#xff0c;点击按钮后&#xff0c;会变成为一个监听按钮。旁边会有音符飞入这个监听按钮&#xff0c;最后转换成一个音乐播放器。 效果预览 源码获取 基于html5实现音乐录音播放动画源码

《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知&#xff0c;乃至可以使用感知结果直接构建鸟瞰图&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 则依赖离线地图。 高精地…

【LeetCode】:删除回文子数组【困难】

class Solution { public:// 思考:能否用滚动数组进行优化int minimumMoves(vector<int>& arr) {// 定义状态dp[i][j]为i-j的最小步数int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把这 1 次理解为一种 最小操作单…

ChatGPT入门之文本情绪识别:先了解LSTM如何处理文字序列

文章目录 0. 首先聊聊什么是RNN1. 理解LSTM&#xff0c;从数据如何喂给 LSTM开始2. LSTM每个门是如何处理序列数据的&#xff1f;2.1 遗忘门&#xff08;Forget Gate&#xff09;&#xff1a;该忘掉哪些信息&#xff1f;2.2 输入门&#xff08;Input Gate&#xff09;&#xff…

AI学习路线图-邱锡鹏-神经网络与深度学习

1 需求 神经网络与深度学习 2 接口 3 示例 4 参考资料

C#用直线和曲线抗锯齿

使用 GDI 绘制一条线时&#xff0c;要提供线条的起点和终点&#xff0c;但不必提供有关线条上各个像素的任何信息。 GDI 与显示驱动程序软件协同工作&#xff0c;确定将打开哪些像素以在特定显示设备上显示该线条。 效果对比 代码实现 关键代码 e.Graphics.SmoothingMode Sm…

【opencv】第8章 图像轮廓与图像分割修复

8.1 查找并绘制轮廓 一个轮廓一般对应一系列的点&#xff0c;也就是图像中的一条曲线。其表示方法可能 根据不同的情况而有所不同。在OpenCV 中&#xff0c;可以用findContours()函数从二值图 像中查找轮廓 8.1.1 寻找轮廓&#xff1a; findContours() 函数 findContours) 函…

Unity 大地图功能 离线瓦片地图

不使用第二个摄像机实现类似开放世界的大地图功能。 功能如下&#xff1a; 按下M键打开/关闭大地图功能 打开大地图时&#xff0c;默认玩家位置居中 大地图支持拖拽&#xff0c;可调节拖拽速度&#xff0c;支持XY轴翻转 支持大地图设置边缘偏移量 可设置是否启动拖拽边界 …

Bootstrap 前端 UI 框架

Bootstrap官网&#xff1a;Bootstrap中文网 铂特优选 Bootstrap 下载 点击进入中文文档 点击下载 生产文件是开发响应式网页应用&#xff0c;源码是底层逻辑代码&#xff0c;因为是要制作响应式网页&#xff0c;所以下载开发文件 引入 css 文件&#xff0c; bootstrap.css 和 …

error: linker `link.exe` not found

开始学习rust&#xff0c;安装好rust的环境&#xff0c;开始从hello world开始&#xff0c;结果用在win10环境下&#xff0c;使用vs code或cmd窗口编译rust报错&#xff1a; PS E:\study_codes\rust-demo\chart01> rustc hello.rs error: linker link.exe not found| note:…

django基于Python的校园个人闲置物品换购平台

Django 基于 Python 的校园个人闲置物品换购平台 一、平台概述 Django 基于 Python 的校园个人闲置物品换购平台是专为校园师生打造的一个便捷、环保且充满活力的线上交易场所。它借助 Django 这一强大的 Python Web 开发框架&#xff0c;整合了校园内丰富的闲置物品资源&…

【Vim Masterclass 笔记10】S06L23:Vim 核心操作训练之 —— 文本的搜索、查找与替换操作(第二部分)

文章目录 S06L23 Search, Find, and Replace - Part Two1 文本替换命令 :s/old/new/2 指定范围的文本替换3 特例&#xff1a;路径的替换4 文件行号的配置5 要点总结&#xff08;1&#xff09;搜索当前行&#xff08;Same Line Searching&#xff09;&#xff08;2&#xff09;跨…

【计算机网络】课程 实验五 静态路由配置

实验五 静态路由配置 一、实验目的 理解静态路由的工作原理&#xff0c;掌握如何配置静态路由。 二、实验分析与设计 【背景描述】 假设校园网分为 2 个区域&#xff0c;每个区域内使用 1 台路由器连接 2 个子网&#xff0c; 现要在路由器上 做适当配置&#xff0c;实现校…

Linux下部署Redis(本地部署超详细)

非docker 1、下载Redis 历史版本&#xff1a; http://download.redis.io/releases 我的&#xff1a; http://download.redis.io/releases/redis-7.0.5.tar.gz 2.安装教程 1.Redis是基于c语言编写的需要安装依赖&#xff0c;需要安装gcc yum install gcc-c 2.查看gcc版…

Spring——几个常用注解

环境配置 1.在配置文件中导入约束(context — 共三个)并添加一项配置( context:annotation-config/) 才能支持注解的使用 context 约束&#xff1a; xmlns:context“http://www.springframework.org/schema/context” 2.xsi:schemaLocation下的&#xff1a;" http://ww…