实现静态网络爬虫(入门篇)

一、了解基本概念以及信息

1.什么是爬虫

爬虫是一段自动抓取互联网信息的程序,可以从一个URL出发,访问它所关联的URL,提取我们所需要的数据。也就是说爬虫是自动访问互联网并提取数据的程序。

它可以将互联网上的数据为我所用,开发出属于自己的网站或APP。

2.在爬虫程序中有三个模块

(1)URL管理器:对将要爬取的URL和已经爬取过的URL这两个数据进行管理

(2)网页下载器:将URL管理器里提供的一个URL对应的网页下载下来,存储为一个字符串,这个字符串会传送给网页解析器进行解析  

(3)网页解析器:一方面会解析出有价值的数据,另一方面,由于每一个页面都有很多指向其它页面的网页,这些URL被解析出来之后,可以补充进URL管理器

3.网页解析器——LXML和Xpath

1.网页解析概述:

除了学会向服务器发出请求、下载HTML源码,要获取结构化的数据还面临一个最常见的任务,就是从HTML源码中提取数据。

三种方法:

正则表达式

lxml库

BeautifulSoup

针对文本的解析,用正则表达式

针对html/xml的解析,有Xpath、BeautifulSoup、正则表达式

针对JSON的解析,有JSONPath

2.xpath(XML Path Language)实现路径选择,变换路径实现对信息的采集。使用路径表达式来选取XML文档中的节点或者节点集

3.Xpath里面管理扩展程序保持一个类似这样的格式

// 是当前根目录下 @ [] 通过检查找到你想要的东西

4.如何Copy   Xpath,以豆瓣电影为例​​​​​​(http:淄博 - 在线购票&影讯)

右键点击检查按钮

进入Xpath的管理扩展程序,具体的插件要下载安装找教程

就像这样:

具体的解释:

5.Lxml库:

lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。

lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。

lxml python 官方文档:http://lxml.de/index.html

需要安装C语言库,可使用 pip 安装:pip install lxml

Lxml进行解析封装:

我们可以利用他来解析HTML代码,并且在解析HTML代码的时候,如果HTML代码不规范,他会自动的进行补全

1.使用 lxml 的 etree 库 from lxml import etree

2.python 3.5后的lxml模块中不能再直接引入etree模块,需要使用以下方法引用

from lxml import html

etree=html.etree

二、如何使用PyCharm写代码来实现网络爬虫

淄博 - 在线购票&影讯淄博电影院在线优惠购票及影讯排片查询https://movie.douban.com/cinema/nowplaying/zibo/还是以这个网址为例:

1.url就是你要爬虫页面的网址,headers是一个请求头,要这样寻找:

1.还是要在页面上右键检查

2.这个代码是一个简单的网络爬虫,用于从豆瓣电影的“正在上映”页面中提取电影信息。代码详情:

# 导入所需的库
import requests  # 用于发送HTTP请求
from bs4 import BeautifulSoup  # 用于解析HTML文档

# 设置目标URL和请求头
url = "https://movie.douban.com/cinema/nowplaying/zibo/"  # 豆瓣电影正在上映页面的URL
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0"
}  # 请求头,模拟浏览器访问,避免被服务器识别为爬虫

# 发送HTTP GET请求,获取网页内容
res = requests.get(url, headers=headers)  # 使用requests库发送请求,获取响应对象
soup = BeautifulSoup(res.text, "lxml")  # 使用BeautifulSoup解析HTML文档,lxml是解析器类型

# 查找电影列表
lists = soup.find("ul", class_="lists")  # 在HTML文档中查找第一个<ul>标签,且其class属性为"lists"
if lists:  # 如果找到了电影列表
    movies = []  # 初始化一个空列表,用于存储提取的电影信息
    # 查找所有<li>标签,且其class属性为"stitle"
    lis = lists.find_all("li", class_="stitle")
    for li in lis:  # 遍历每个<li>标签
        a = li.find("a")  # 在<li>标签中查找<a>标签
        if a:  # 如果找到了<a>标签
            title = a.get_text()  # 获取<a>标签的文本内容,即电影标题
            href = a["href"]  # 获取<a>标签的href属性值,即电影详情页的链接
            movie = {"title": title.strip(), "href": href}  # 将电影标题和链接以字典形式存储
            movies.append(movie)  # 将字典添加到movies列表中

    # 输出方式1:直接打印字典列表
    # print(movies)  # 直接输出movies列表,内容为字典形式

    # 输出方式2:换行输出每个电影的标题和链接
    for movie in movies:  # 遍历movies列表中的每个电影
        print(f"Title: {movie['title']}\nLink: {movie['href']}\n")  # 打印电影标题和链接,并换行
else:  # 如果没有找到电影列表
    print("未找到电影列表")  # 打印提示信息

# 或者这样写(注释掉的代码):
# if lists:
#     movies = []
#     for li in lists.find_all("li", class_="stitle"):
#         a = li.find("a")
#         if a:
#             title = a.get_text()
#             href = a["href"]
#             movies.append({"title": title.strip(), "href": href})
#     print(movies)  # 直接输出movies列表,内容为字典形式
# else:
#     print("未找到电影列表")  # 打印提示信息

3.代码功能总结

  1. 导入库:使用 requests 发送 HTTP 请求,使用 BeautifulSoup 解析 HTML 文档。

  2. 设置 URL 和请求头:定义目标 URL 和请求头,模拟浏览器访问。

  3. 发送请求并解析 HTML:获取网页内容并解析为 BeautifulSoup 对象。

  4. 查找电影列表:通过 HTML 标签和类名定位电影列表。

  5. 提取电影信息:从每个电影条目中提取标题和链接,并存储在列表中。

  6. 输出结果

    • 方式1:直接打印 movies 列表,输出字典形式的内容。

    • 方式2:遍历 movies 列表,换行输出每个电影的标题和链接。

这是运行详情,其他的页面也是同样的道理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络——交换机

一、什么是交换机&#xff1f; 交换机&#xff08;Switch&#xff09;是局域网&#xff08;LAN&#xff09;中的核心设备&#xff0c;负责在 数据链路层&#xff08;OSI第二层&#xff09;高效转发数据帧。它像一位“智能交通警察”&#xff0c;根据设备的 MAC地址 精准引导数…

【SpringBoot】深入解析 Maven 的操作与配置

Maven 1.什么是Maven? Maven是一个项目管理工具&#xff0c;通过pom.xml文件的配置获取jar包&#xff0c;而不用手动去添加jar包&#xff1b; 2. 创建一个Maven项目 IDEA本身已经集成了Maven&#xff0c;我们可以直接使用&#xff0c;无需安装 以下截图的idea版本为&#xff…

MySQL的安装以及数据库的基本配置

MySQL的安装及配置 MySQL的下载 选择想要安装的版本&#xff0c;点击Download下载 Mysql官网下载地址&#xff1a;​ ​https://downloads.mysql.com/archives/installer/​​ MySQL的安装 选择是自定义安装&#xff0c;所以直接选择“Custom”&#xff0c;点击“Next”​ …

Manus AI : Agent 元年开启.pdf

Manus AI : Agent 元年开启.pdf 是由华泰证券出品的一份调研报告&#xff0c;共计23页。报告详细介绍了Manus AI 及 Agent&#xff0c;主要包括Manus AI 的功能、优势、技术能力&#xff0c;Agent 的概念、架构、应用场景&#xff0c;以及 AI Agent 的类型和相关案例&#xff0…

2.数据结构-栈和队列

数据结构-栈和队列 2.1栈2.1.1栈的表示和实现2.1.2栈的应用举例数制转换括号匹配检验迷宫给求解表达式求值 2.1.3链栈的表示和实现2.1.4栈与递归的实现遍历输出链表中各个结点的递归算法*Hanoi塔问题的递归算法 2.2队列2.2.1循环队列——队列的顺序表示和实现2.2.2链队——队列…

(十七) Nginx解析:架构设计、负载均衡实战与常见面试问题

什么是Nginx? Nginx 是一款高性能的 HTTP 服务器和反向代理服务器&#xff0c;同时支持 IMAP/POP3/SMTP 协议。其设计以高并发、低资源消耗为核心优势&#xff0c;广泛应用于负载均衡、静态资源服务和反向代理等场景。 一、Nginx 的核心优势 高并发处理能力采用异步非阻塞的…

Cpu100%问题(包括-线上docker服务以及Arthas方式进行处理)

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手

目录 一、前言 二、WPS接入AI工具优势​​​​​​​ 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…

架构思维:高性能架构_01基础概念

文章目录 概述基础概念性能指标利特尔法则&#xff08;O T L&#xff09;系统优化策略1. 降低耗时&#xff08;L↓&#xff09;2. 增加容量&#xff08;O↑&#xff09;3. 增加时延&#xff08;L↑&#xff09; 场景化指标选择响应时间优先吞吐量/容量优先平衡策略 概述 一个…

解决stylelint对deep报错

报错如图 在.stylelintrc.json的rules中配置 "selector-pseudo-class-no-unknown": [true,{"ignorePseudoClasses": ["deep"]} ]

VScode 中文符号出现黄色方框的解决方法

VScode 中文符号出现黄色方框的解决方法 我的vscode的python多行注释中会将中文字符用黄色方框框处&#xff1a; 只需要打开设置搜索unicode&#xff0c;然后将这一项的勾选取消掉就可以了&#xff1a; 取消之后的效果如下&#xff1a; 另一种情况&#xff1a;中文显示出现黄色…

大模型架构记录2

一 应用场景 1.1 prompt 示例 1.2 自己搭建一个UI界面&#xff0c;调用接口 可以选用不同的模型&#xff0c;需要对应的API KEY 二 Agent 使用 2.1 构建GPT

深度学习实战车辆目标跟踪与计数

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对车辆目标数据集进行训练和优化&#xff0c;该数据集包含丰富的车辆目标图像样本…

升级到Android Studio 2024.2.2 版本遇到的坑

一、上来就编译报错&#xff0c;大概率是因为选择了替换安装&#xff0c;本地配置文件出错 找到本地当前版本的配置文件&#xff0c;删掉&#xff0c;重启studio就好了&#xff1a; 1、打开终端 2、“cd /Users/用户名/Library/Application\ Support/Google” //到Google目录 …

Git - 补充工作中常用的一些命令

Git - 补充工作中常用的一些命令 1 一些场景1.1 场景11.2 场景21.3 场景31.4 场景41.5 场景51.6 场景61.7 场景71.8 场景81.9 场景91.10 场景101.11 场景111.12 场景121.13 场景131.14 场景141.15 场景15 2 git cherry-pick \<commit-hash\> 和 git checkout branch \-\-…

【网络安全工程】任务11:路由器配置与静态路由配置

目录 一、概念 二、路由器配置 三、配置静态路由CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、概念 1、路由器的作用&#xff1a;通过路由表进行数据的转发。 2、交换机的作用&#xff1a;通过学习和识别 MAC 地址&#xff0c;依据 M…

如何用更少的内存训练你的PyTorch模型?深度学习GPU内存优化策略总结

在训练大规模深度学习模型时&#xff0c;GPU 内存往往成为关键瓶颈&#xff0c;尤其是面对大型语言模型&#xff08;LLM&#xff09;和视觉 Transformer 等现代架构时。由于大多数研究者和开发者难以获得配备海量 GPU 内存的高端计算集群&#xff0c;掌握高效的内存优化技术至关…

Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)

Dify部署参考&#xff1a;Dify Rag部署并集成在线Deepseek教程&#xff08;Windows、部署Rag、安装Ragan安装、安装Dify安装、安装ollama安装&#xff09; DifyDeepSeek - Excel数据一键可视化&#xff08;创建步骤案例&#xff09;-DSL工程文件&#xff08;可直接导入&#x…

linux下ollama离线安装

一、离线安装包下载地址 直接下载地址&#xff1a; https://github.com/ollama/ollama/releases/tag/v0.5.12 网络爬取地址&#xff1a; MacOS https://ollama.com/download/Ollama-darwin.zip Linux curl -fsSL https://ollama.com/install.sh | sh Windows https://olla…

MAC 搭建Dify+DeepSeek-R1整合部署

在开始安装之前&#xff0c;我们需要确保系统满足以下基本要求&#xff1a; CPU至少2核心内存至少4GB&#xff08;建议8GB以上&#xff09;硬盘空间至少20GB&#xff08;为了后续扩展&#xff09;操作系统支持&#xff1a;Windows、macOS或LinuxDocker环境 1. dify的安装步骤…