当前位置: 首页 > news >正文

PYTHON爬虫基础

一、安装package

在使用爬虫前,需要先安装三个包,requests、BeautifulSoup、selenium。

输入如下代码,若无报错,则说明安装成功。

import requests
from bs4 import BeautifulSoup
import selenium

二、Requests应用

blog.csdnimg.cn/3e391689d61e4284a835fe34177509ce.png)
在这里插入图片描述
在这里插入图片描述
了解了原理,接下来实际应用一下requests库叭~

import requestsurl = "https://www.baidu.com"
r = requests.get(url)
print(r.status_code)
print(r.headers)
print(r.text)

如果运行上述代码时出现如下报错:👇
requests.exceptions.ProxyError: HTTPSConnectionPool(host='blog.csdn.net', port=443): Max retries exceeded with url: /m0_51339444/article/details/129049696 (Caused by ProxyError('Cannot connect to proxy.', OSError(0, 'Error')))
可能是因为:(1)网络资源过大,网络无法加载;(2)使用了科学上网,需要关闭。

运行后,其中,r.status_code的返回值是200,表示请求成功,但是如果返回值是400,则表示请求失败。另外,发现程序的r.text输出出现乱码,这是因为在headers内没有明确指出encoding方式,会将其默认成ISO-8859-1编码方式,导致乱码。但是,仔细观察r.text输出,meta中暗示了是“utf-8”编码:👇
在这里插入图片描述
因此,需要指定r.encoding = “utf-8”,然后再执行,输出无乱码。完整代码如下:

import requestsurl = "https://www.baidu.com"
r = requests.get(url)
print(r.status_code)
print("===============================")
print(r.headers)
print("===============================")
print(r.text)
print("===============================")
print(r.encoding)
r.encoding = "utf-8"
print("===============================")
print(r.text)

三、URL管理器

在这里插入图片描述

class UrlManager():"""url管理器"""def __init__(self):  # 初始化self.new_urls = set()  # 放待爬取过的urlself.old_urls = set()  # 放已经爬取的url# 增添新的url(下面两个函数)(实现添加以及判重)def add_new_url(self, url):if url is None or len(url) == 0:  # 判定url是否合法return# 判断url是否在容器中, 在就return,不添加if url in self.new_urls or url in self.old_urls:returnself.new_urls.add(url)  # 否则,就添加新的url在集合中def add_new_urls(self, urls):if urls is None or len(urls) == 0:returnfor url in urls:self.add_new_url(url)# 获取待爬取的url (记得更改url状态)def get_url(self):if self.has_new_url():url = self.new_urls.pop()self.old_urls.add(url)return urlelse:return None# 判断容器中有没有新的待爬取的urldef has_new_url(self):return len(self.new_urls) > 0if __name__ == "__main__":url_manager = UrlManager()url_manager.add_new_url("url1")url_manager.add_new_urls(["url1", "url2"])print(url_manager.new_urls, url_manager.old_urls)print("================================")new_url = url_manager.get_url()print(url_manager.new_urls, url_manager.old_urls)print("================================")new_url = url_manager.get_url()print(url_manager.new_urls, url_manager.old_urls)print("================================")print(url_manager.has_new_url())

在这里插入图片描述

四、HTML简介

为了方便我们更好的理解网站的构成,需要先了解一下HTML的基本原理。
在这里插入图片描述
<head>里面是网站上不可见的信息
<body>里面是网站上可见的信息

相关文章:

PYTHON爬虫基础

一、安装package 在使用爬虫前&#xff0c;需要先安装三个包&#xff0c;requests、BeautifulSoup、selenium。 输入如下代码&#xff0c;若无报错&#xff0c;则说明安装成功。 import requests from bs4 import BeautifulSoup import selenium二、Requests应用 了解了原理…...

JavaScript刷LeetCode模板技巧篇(一)

虽然很多人都觉得前端算法弱&#xff0c;但其实 JavaScript 也可以刷题啊&#xff01;最近两个月断断续续刷完了 leetcode 前 200 的 middle hard &#xff0c;总结了一些刷题常用的模板代码。 常用函数 包括打印函数和一些数学函数。 const _max Math.max.bind(Math); co…...

ros-sensor_msgs/PointCloud2消息内容解释

1.字段解释 header-----头文件&#xff0c;包含消息的序列号&#xff0c;时间戳(系统时间)和坐标系id&#xff0c;其中secs为秒&#xff0c;nsecs为去除秒数后剩余的纳秒数 height-----点云的高度&#xff0c;如果是无序点云&#xff0c;则为1&#xff0c;例子中的点云为有序点…...

LeetCode 每日一题2347. 最好的扑克手牌

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

MMPBSA计算--基于李继存老师gmx_mmpbsa脚本

MMPBSA计算–基于李继存老师gmx_mmpbsa脚本 前期准备 软件安装 安装gromacs, 可以查阅 我的blogGromacs-2022 GPU-CUDA加速版 unbantu 安装 apbs, sudo apt install apbs 安装 gawk, sudo apt install gawk MD模拟好的文件 我们以研究蛋白小分子动态相互作用-III(蛋白配体…...

Kafka优化篇-压测和性能调优

简介 Kafka的配置详尽、复杂&#xff0c;想要进行全面的性能调优需要掌握大量信息&#xff0c;这里只记录一下我在日常工作使用中走过的坑和经验来对kafka集群进行优化常用的几点。 Kafka性能调优和参数调优 性能调优 JVM的优化 java相关系统自然离不开JVM的优化。首先想到…...

MinIo-SDK

3.2.5 SDK 3.2.5.1上传文件 MinIO提供多个语言版本SDK的支持&#xff0c;下边找到java版本的文档&#xff1a; 地址&#xff1a;https://docs.min.io/docs/java-client-quickstart-guide.html 最低需求Java 1.8或更高版本: maven依赖如下&#xff1a; XML<dependency&g…...

系统分析师真题2018试卷相关概念一

面向对象的基本概念: 对象的三要素为:属性(数据)、方法(操作)、对象ID(标识)UML2.0包括14种图: 类图(class diagram):类图描述一组类、接口、协作和他们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计图,活动类的类图给出了系统的静…...

身为大学生,你不会还不知道有这些学生福利吧!!!!

本文介绍的是利用学生身份可以享受到的相关学生优惠权益&#xff0c;但也希望各位享受权利的同时不要忘记自己的义务&#xff0c;不要售卖、转手自己的学生优惠资格&#xff0c;使得其他同学无法受益。 前言 高考已经过去&#xff0c;我们也将迎来不同于以往的大学生活&#x…...

试题 算法训练 藏匿的刺客

问题描述 强大的kAc建立了强大的帝国&#xff0c;但人民深受其学霸及23文化的压迫&#xff0c;于是勇敢的鹏决心反抗。   kAc帝国防守森严&#xff0c;鹏带领着小伙伴们躲在城外的草堆叶子中&#xff0c;称为叶子鹏。   kAc帝国的派出的n个看守员都发现了这一问题&#xff…...

JavaWab开发的总括以及HTML知识

一、Web开发的总括在这里我来给大家介绍一下Wab开发需要配合哪些前后端的对应语言:首先是Java(Java通常的工作):Wab开发android开发大数据开发另外,Wab开发想要学好就需要配合之前博客中的内容,如:多线程/IO/网络/数据结构/数据库......这里建议学懂前面的内容再往下走.JavaWab…...

Oracle数据库文件(*.dbf)迁移【图文教程】

目录 背景 解决 第1步:sqlplus登录 第2步:查看Oracle数据文件所在目录 第3步:修改表空间为离线状态 第4步: 移动数据库文件到新目录 第5步:修改表空间数据文件位置 第6步:修改表空间为online状态 第7步:临时表空间处理 第8步:验证修改是否成功 参考...

Java中如何创建和使用对象?

要想使用一个类则必须要有对象。在Java程序中可以使用new关键字创建对象&#xff0c;具体格式如下&#xff1a;类名对象名称null; 对象名称new 类名();上述格式中&#xff0c;创建对象分为声明对象和实例化对象两步&#xff0c;也可以直接通过下面的方式创建对象&#xff0c;具…...

Spring Cloud Alibaba--ActiveMQ微服务详解之消息队列(四)

上篇讲述高并发情况下的数据库处理方式&#xff1a;分布式事务管理机制。即使我们做到这一步并发情况只能稍微得到缓解&#xff0c;当然千万级别的问题不大&#xff0c;但在面对双十一淘宝这类的达上亿的并发的时候仅仅靠分布式事务管理还是远远不够&#xff0c;即使数据库可以…...

32岁,薪水被应届生倒挂,裸辞了

今年 32 岁&#xff0c;我从公司离职了&#xff0c;是裸辞。 前段时间&#xff0c;我有一件事情一直憋在心里很难受&#xff0c;想了很久也没找到合适的人倾诉&#xff0c;就借着今天写出来。 我一个十几年开发经验&#xff0c;八年 软件测试 经验的职场老人&#xff0c;我慢…...

蓝桥杯训练day1

前缀和差分1.前缀和(1)3956. 截断数组(2)795. 前缀和(3)796. 子矩阵的和(4)1230. K倍区间(5)99. 激光炸弹2.差分(1)797. 差分(2)差分矩阵(3)3729. 改变数组元素(4)100. 增减序列1.前缀和 (1)3956. 截断数组 方法1&#xff1a;暴力 先用两个数组分别保存前缀和&#xff0c;后缀…...

Unity毛发系统TressFX Exporter

Unity 数字人交流群&#xff1a;296041238 一&#xff1a;在Maya下的TressFX Exporter 插件安装步骤&#xff1a; 1. 下载Maya的TressFX Exporter插件 下载地址&#xff1a;TressFX Exporter 链接&#xff1a;https://github.com/Unity-China/cn.unity.hairfx.core/tree/m…...

《爆肝整理》保姆级系列教程python接口自动化(十九)--Json 数据处理---实战(详解)

简介 上一篇说了关于json数据处理&#xff0c;是为了断言方便&#xff0c;这篇就带各位小伙伴实战一下。首先捋一下思路&#xff0c;然后根据思路一步一步的去实现和实战&#xff0c;不要一开始就盲目的动手和无头苍蝇一样到处乱撞&#xff0c;撞得头破血流后而放弃了。不仅什么…...

Golang:reflect反射的使用例子

1.reflect包作用 reflect包定义了“反射”相关能力&#xff0c;“反射”在计算机学中是指计算机程序在运行时&#xff08;runtime&#xff09;可以访问、检测和修改它本身状态或行为的一种能力。基于反射特性可以通用化地解决一些需要频繁修改代码及硬编码问题&#xff0c;但是…...

markdown常用语法--花括号(超详细)

&#x1f48c; 所属专栏&#xff1a;【Markdown常用语法】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1…...

5分钟本地部署Asian Beauty Z-Image Turbo:零基础生成东方美学人像写真

5分钟本地部署Asian Beauty Z-Image Turbo&#xff1a;零基础生成东方美学人像写真 在数字内容创作蓬勃发展的今天&#xff0c;高质量人像图像的需求与日俱增。特别是对于东方审美风格的人像写真&#xff0c;传统拍摄方式成本高昂且效率低下。今天&#xff0c;我将带你快速部署…...

Spire.Doc转PDF授权限制解析与解决方案

1. Spire.Doc转PDF的三页限制是怎么回事 第一次用Spire.Doc转换PDF时&#xff0c;我盯着生成的3页文档愣了半天——明明50页的Word文件&#xff0c;怎么输出就只剩个开头了&#xff1f;后来查文档才发现&#xff0c;这是未授权版本的硬性限制。就像试用版软件经常会有功能阉割&…...

实战指南:利用JPerf优化嵌入式网络性能测试

1. JPerf工具基础入门&#xff1a;从零开始网络性能测试 第一次接触嵌入式网络性能测试时&#xff0c;我被各种专业术语和复杂参数搞得晕头转向。直到发现了JPerf这个神器&#xff0c;才真正打开了网络调优的大门。JPerf实际上是iPerf的图形化版本&#xff0c;它把原本需要记忆…...

C语言void指针与函数指针的深度解析与应用

1. 深入理解void指针的本质void指针是C语言中一个独特而强大的工具&#xff0c;它本质上是一个"无类型"的指针。与普通指针不同&#xff0c;void指针不关联任何具体的数据类型&#xff0c;这使得它具有特殊的属性和限制。1.1 void指针的基本特性void指针的声明方式很…...

OpenClaw日志分析技巧:千问3.5-9B辅助故障定位

OpenClaw日志分析技巧&#xff1a;千问3.5-9B辅助故障定位 1. 为什么需要AI辅助日志分析&#xff1f; 上周排查一个OpenClaw任务失败的问题时&#xff0c;我盯着3MB的日志文件看了整整两小时。那些重复的报错堆栈和模糊的警告信息像迷宫一样——直到我意识到&#xff1a;与其…...

嵌入式 AI 助手的三层意图识别架构:如何在“快、准、稳“之间取得平衡

背景 我在开发一个项目协同平台的嵌入式 AI 助手。它不是独立的 chatbot&#xff0c;而是嵌在业务页面里的——用户可以在首页、项目详情页、任务抽屉等不同位置唤起它&#xff0c;用自然语言完成任务查询、创建、删除等操作。 和通用对话 AI 不同&#xff0c;这个助手有两个硬…...

告别手动备份!用Power Automate Desktop自动备份桌面重要文件并生成日志

告别手动备份&#xff01;用Power Automate Desktop打造智能文件备份系统 每天下班前&#xff0c;你是否会习惯性地将桌面上的重要文件拖拽到U盘或移动硬盘&#xff1f;这种重复性操作不仅耗时耗力&#xff0c;还容易因疏忽导致文件遗漏。更糟糕的是&#xff0c;当系统崩溃或误…...

深入解析C语言malloc(0)的内存分配机制

1. 深入解析 malloc(0) 的行为机制在 C 语言编程中&#xff0c;内存管理是一个基础但极其重要的话题。malloc 函数作为动态内存分配的核心工具&#xff0c;其行为规范在 C 标准中有明确定义。然而&#xff0c;当我们遇到像 malloc(0) 这样的边界情况时&#xff0c;事情就变得有…...

光刻胶选型避坑指南:从正胶负胶到配套试剂的全流程解析

光刻胶选型避坑指南&#xff1a;从正胶负胶到配套试剂的全流程解析 在半导体制造领域&#xff0c;光刻工艺的质量直接决定了芯片的性能和良率。而光刻胶作为光刻工艺的核心材料&#xff0c;其选型往往成为工艺工程师最头疼的问题之一。我曾亲眼见过一个团队因为选错光刻胶类型&…...

LLMKG+ 知识图谱改进实战指南(非常详细),大模型提升质量与覆盖从入门到精通,收藏这一篇就够了!

LLMKG&#xff0b;: Systematically improving knowledge quality and coverage in KGs using LLMs – A case study in medical domain 摘要 本文提出了LLMKG框架&#xff0c;首次系统性地解决了知识图谱中三元组级别的语义冗余问题。该框架结合检索增强生成与分层扩展过滤机…...