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

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

一、项目概述

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

二、技术选型与原理

  1. requests:这是 Python 中用于发送 HTTP 请求的常用库。它能够模拟浏览器向网页服务器发送请求,并获取网页的 HTML 文本内容。在本项目中,我们利用它来获取目标文章网页的源代码,为后续的信息提取提供基础数据。其使用方法非常简单,只需调用 requests.get() 方法,并传入目标 URL 和可选的请求头信息即可。例如:
import requests

url = "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 BeautifulSoup

soup = BeautifulSoup(html_text, 'html.parser')

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

三、代码实现步骤

  1. 定义提取函数
import requests
from bs4 import BeautifulSoup


def 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> 标签。然后遍历找到
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值