当前位置: 首页 > 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…...

BN、SyncBN、IN、LN、GN学习记录

1 BatchNormBN的原理BN是计算机视觉最常用的标准化方法&#xff0c;它沿着N、H、W维度对输入特征图求均值和方差&#xff0c;随后再利用均值和方差来归一化特征图。计算过程如下图所示&#xff0c;1&#xff09;沿着通道维度计算其他维度的均值&#xff1b;2&#xff09;沿着通…...

使用 Auto-scheduling 优化算子

本篇回答来源于 TVM 官方英文文档 Lianmin Zheng&#xff0c;Chengfan Jia。更多 TVM 中文文档可访问→https://tvm.hyper.ai/ 本教程将展示 TVM 的 Auto Scheduling 功能&#xff0c;如何在不编写自定义模板的情况下&#xff0c;找到最佳 schedule。 与基于模板的 AutoTVM 依…...

智能运维应用之道,告别企业数字化转型危机

面临的问题及挑战 数据中心发展历程 2000 年中国数据中心始建&#xff0c;至今已经历以下 3 大阶段。早期&#xff1a;离散型数据中心 IT 因以项目建设为导向&#xff0c;故缺乏规划且无专门运维管理体系&#xff0c;此外&#xff0c;开发建设完的项目均是独立运维维护&#…...

第七章 SQL错误信息 - SQL错误代码 -400 到 -500

文章目录第七章 SQL错误信息 - SQL错误代码 -400 到 -500SQL错误代码和消息表WinSock错误代码-10050到-11002第七章 SQL错误信息 - SQL错误代码 -400 到 -500 SQL错误代码和消息表 错误代码描述-400发生严重错误-401严重连接错误-402用户名/密码无效-405无法从通信设备读取-4…...

DDFN: Decoupled Dynamic Filter Networks解耦的动态卷积

一、论文信息 论文名称&#xff1a;Decoupled Dynamic Filter Networks 论文&#xff1a;https://thefoxofsky.github.io/files/ddf.pdf 代码&#xff1a;https://github.com/theFoxofSky/ddfnet 主页&#xff1a;https://thefoxofsky.github.io/project_pages/ddf 作者团…...

NISP认证报名条件是什么?考试内容是什么?

科学技术是社会发展的第一生产力&#xff0c;每个国家为了能够获得更高的国际地位&#xff0c;不断提升自己的科学技术&#xff0c;现代最为先进的技术就是信息通信&#xff0c;在军事、民生、医疗、教育、制造等等领域都起着重要的作用&#xff0c;我们的生活也因为信息技术而…...

利用redis实现缓存、发布订阅、分布式锁功能

Redis是一个内存键值存储数据库&#xff0c;通常用于缓存、会话管理、消息队列等场景。以下是一些常见的Redis使用场景&#xff1a;1.缓存&#xff1a;将常用的数据缓存在Redis中&#xff0c;以减少对数据库的访问次数&#xff0c;提高应用程序的性能。2.会话管理&#xff1a;使…...

SVN无法连接到服务器的各种问题原因及解决办法

SVN专业使用教程详解 第一节 安装VisualSVN Server服务器 第一步 下载SVN服务器&#xff0c;需要链接的请私信。 点击下载的执行文档进行安装 选择组件 选择在部署 VisualSVN Server 时安装VisualSVN Server 和 Administration Tools 组件。 调整初始服务器配置 或者&…...

React 基本使用

目录 React 安装 React基本使用 React脚手架 脚手架使用React JSX基本使用 JSX列表渲染 JSX条件渲染 JSX模板精简 JSX样式控制 JSX综合案例 React 安装 npm i react react-domnpm init -y&#xff08;生成基础目录文件&#xff09; <!-- 引入js文件 --><sc…...

单例模式设计(面试题)

1、static修饰变量规则static修饰的静态成员属于 类而不是对象&#xff0c;所有的对象共享一份静态成员数据&#xff0c;所以不占用类的空间static修饰的成员&#xff0c;定义类的时候&#xff0c;必须分配空间static修饰的静态成员数据 必须类中定义 类外初始化静态成员变量可…...

时代网站管理系统怎么做网站/今天重大新闻头条新闻

var time1; var srcollOld 0,srcollNow 0,scrollFun false; $(window).scroll(function () {//$(window).scrollTop()这个方法是当前滚动条滚动的距离//$(window).height()获取当前窗体的高度//$(document).height()获取当前文档的高度var bot 50; //bot是底部距离的高度i…...

wordpress商城怎么样/100%上热门文案

2020/7/28 依旧是和sql有着不解之缘的一天 总结一下在python中用sql语句的一些汇总 insertinsert into tablename(column1,column2...) values(value1,value2...) insert into tablename(column1,column2...) values(%s,%s...)---->然后你要传数据到这个里面去&#xff0…...

网站如何做图片特效/seo全称

使用的是XHScrollMenu和UIPageViewController来构建5个页面:ViewController1, ViewController2, ViewController3, ViewController4, ViewController5。XHScrollMenu和UIPageViewController左右滑动均可以控制页面的切换。一般情况下是正确的。但如果点击了menu&#xff0c;切换…...

机械网站开发/网络广告文案

在python中没有类似sub()或者subString()的方法&#xff0c;但是字符串的截取操作却是更加简单。 只需要把字符串看作是一个字符数组&#xff0c;截取子串非常方便。 多余的话就不啰嗦了&#xff0c;看下面的例子就明白了。 str ’0123456789′ print str[0:3] #截取第一位到第…...

亳州做网站哪家好/樱桃bt磁力天堂

实际生产开发中&#xff0c;遇到突发情况&#xff0c;需要紧急修复线上bug&#xff0c;但是灰度环境(或者其他预生产测试环境)已经存在多个新功能的代码了&#xff0c;这时候我们可能选择直接在生产tag版本的代码上进行修复并发布。 local_branch : 本地分支名 tag_name : 生…...

计算机网站建设招聘/移动网站优化排名

其他参考资料&#xff1a;自行车辐条编织方法&#xff08;交叉编织&#xff09;图文讲解 http://www.360doc6.net/wxarticlenew/448293547.html...