python爬虫基础

文章目录

  • 前言
  • 爬虫简介
  • urllib库的使用
    • 如何获取网页的源码
    • 一个类型六个方法
      • 一个类型
      • 六个方法
        • 1、read()方法
        • 2、readline()方法
        • 3、readlines()方法
        • 4、getcode()
        • 5、geturl()
        • 6、getheaders()
    • urllib下载
      • 下载网页
      • 下载图片
      • 下载视频
    • 请求对象的定制
  • 未完待续

前言

爬虫爬的好牢饭吃的早,爬虫启动!本博客为记录b站尚硅谷爬虫的一些笔记和代码

爬虫简介

1、首先我们需要知道爬虫是什么?爬虫实际上是一段程序,我们可以通过这段程序从互联网上获取到我们想要的数据,这里还有另外一种解释是我们使用程序来模拟浏览器向服务器发送请求,来获取响应信息
2、爬虫的核心:
(1)、爬取网页:爬取整个网页,包含网页中的所有内容
(2)、解析数据:将网页中我们得到的数据解析,因为网页中有众多数据我们只想要我们期望得到的数据,解析也就是得到我们期望数据的过程
(3)、难点:爬虫与反爬虫之间的博弈
3、爬虫的用途
(1)、数据分析/人工数据集
(2)、社交软件的冷启动
(3)、舆情监控
(4)、竞争对手的监控

urllib库的使用

如何获取网页的源码

# 使用urllib获取百度首页的源码
import urllib.request
# 1、定义一个url 要访问的地址url = 'http://www.baidu.com'# 2、模拟浏览器向服务器发送请求 response响应
response = urllib.request.urlopen(url)# 3、获取响应中的页面的源码 content 内容的意思
# read方法返回的是字节形式的二进制数据
# 由于二进制的数据我们是看不懂的,所以我们需要将二进制的数据转换为字符串(我们把二进制转换到字符串这一过程称为解码)
# 解码decode('编码的格式')
content = response.read().decode('utf-8')# 4、打印数据
print(content)

一个类型六个方法

一个类型

import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)# 一个类型和六个方法
print(type(response))

2.png
反应的类型是HTTPResponse

六个方法

1、read()方法

首先关于read()方法我们要清楚的是read()方法读取数据时是一个字节一个字节的读取的,read()方法可以传入参数,代表读的字节数,例如read(5)就是读5个字节

import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)# 一个类型和六个方法
#print(type(response))
content = response.read()

2、readline()方法

只能读取一行,优点是读取速度比较快

import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)# 一个类型和六个方法
#print(type(response))
content = response.readline()
print(content)

3.png

3、readlines()方法

content = response.readlines();
print(content)

readlines()方法还是一行一行地读数据不过会将所有数据读完,并且读出来的结果依然是二进制的

4、getcode()

getcode()是返回的状态码, 如果返回的是200就证明我们写的逻辑没有错误,如果是404,或者一些的奇奇怪怪的数字就证明存在一些问题,所以这个方法常用来进行检验我们的逻辑是不是有错误

import urllib.requesturl = 'http://www.baidu.com'
print(response.getcode())

5.png

5、geturl()

返回我们的url地址

import urllib.requesturl = 'http://www.baidu.com'
print(response.geturl())

6.png

6、getheaders()

获取一些状态信息

import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)# 一个类型和六个方法
#print(type(response))
# content = response.readline()
# print(content)# content = response.readlines();
# print(content)print(response.getheaders())

7.png

urllib下载

下载网页

主要用到的是urlretrieve(url, filename)方法,这个方法里面有两个参数,一个是我们要要在网页的路径,另一个是我们保存所下载网页的文件的路径

import urllib.request# 下载网页
url_page = 'http://www.baidu.com'urllib.request.urlretrieve(url_page, 'baidu.html')

8.png

下载图片

import urllib.request# # 下载网页
# url_page = 'http://www.baidu.com'
#
# urllib.request.urlretrieve(url_page, 'baidu.html')
# 下载图片
url_img = "https://tse4-mm.cn.bing.net/th/id/OIP-C.GftfIjm472xuHpMaGb7BsgAAAA?w=167&h=180&c=7&r=0&o=5&dpr=1.3&pid=1.7"
urllib.request.urlretrieve(url_img, '锦木千束.jpg')
# 下载视频

9.png

下载视频

import urllib.request# # 下载网页
# url_page = 'http://www.baidu.com'
#
# urllib.request.urlretrieve(url_page, 'baidu.html')
# # 下载图片
# url_img = "https://tse4-mm.cn.bing.net/th/id/OIP-C.GftfIjm472xuHpMaGb7BsgAAAA?w=167&h=180&c=7&r=0&o=5&dpr=1.3&pid=1.7"
# urllib.request.urlretrieve(url_img, '锦木千束.jpg')
# 下载视频
url_vedio = 'http://vod.v.jstv.com/video/2023/7/28/20237281690548460345_505_1366.mp4'
urllib.request.urlretrieve(url_vedio, '视频.mp4')

由于pycharm没有内置的播放器所以我们不能直接再pycharm内部观看视频,可以找到文件保存的路径用本地播放器观看
10.png
11.png

请求对象的定制

未完待续

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

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

相关文章

Linux编辑器 - vim使用

1.vim的基本概念 Vim是一个广泛使用的文本编辑器,它是在Unix和Linux系统中常用的命令行文本编辑器之一。 vim的主要三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是 命令模式 ( command mode )、 插入模式 &#xff0…

/bin/bash: Resource temporarily unavailable

有现场反馈plsql无法连接数据库了,登录环境查看时发现从root切换到grid时报错/bin/bash: Resource temporarily unavailable [rootdb1 ~]# su - grid Last login: Thu Jul 27 18:45:04 CST 2023 su: failed to execute /bin/bash: Resource temporarily unavailab…

瑞吉外卖项目----(2)缓存优化

1 缓存优化 1.0 问题说明 1.1 环境搭建 将项目推送到远程仓库里,教程在git 提交远程仓库前建议取消代码检查 创建新的分支v1.0(用于实现缓存优化)并推送到远程仓库 1.1.1 maven坐标 导入spring-data-redis的maven坐标: &l…

2023年DevOps和云趋势报告!

要点 ●云创新已从革命性阶段转变为演进性阶段,重点是迁移和重新架构工作负载。云空间已发展为提供对可扩展资源和托管服务的按需访问,强调简化交互并减少团队的认知负担。 ●人工智能 (AI) 和大型语言模型 (LLM) 可以通过解决认知过载问题并支持即时管…

【ChatGLM_01】ChatGLM2-6B本地安装与部署(大语言模型)

基于本地知识库的问答 1、简介(1)ChatGLM2-6B(2)LangChain(3)基于单一文档问答的实现原理(4)大规模语言模型系列技术:以GLM-130B为例(5)新建知识库…

AgileBoot - 全栈项目启动

AgileBoot-Back-End: 基于Ruoyi做了大量重构优化的基础快速开发框架。采用Springboot Vue 3 Mybatis Plus 更面向对象的业务建模 面向生产的项目。(非玩具项目) 首先克隆代码,同是克隆前端和后端的代码。 前端代码启动: np…

飞桨AI Studio可以玩多模态了?MiniGPT4实战演练!

MiniGPT4是基于GPT3的改进版本,它的参数量比GPT3少了一个数量级,但是在多项自然语言处理任务上的表现却不逊于GPT3。项目作者以MiniGPT4-7B作为实战演练项目。 创作者:衍哲 体验链接: https://aistudio.baidu.com/aistudio/proj…

uniApp 对接安卓平板刷卡器, 读取串口数据

背景: 设备: 鸿合 电子班牌 刷卡对接 WS-B22CS, 安卓11; 需求: 将刷卡器的数据传递到自己的App中, 作为上下岗信息使用, 以完成业务; 对接方式: 1. 厂家技术首先推荐使用 接收自定义广播的方式来获取, 参考代码如下 对应到uniApp 中的实现如下 <template><view c…

阿里云域名备案

最好的爱情&#xff0c;不是因为我们彼此需要在一起&#xff0c;而是因为我们彼此想要在一起。 阿里云的域名如何备案&#xff0c;域名备案和ICP备案一样吗&#xff1f;&#xff1f; 截至我所掌握的知识&#xff08;2021年9月&#xff09;&#xff0c;阿里云的域名备案和ICP备案…

《cuda c编程权威指南》04 - 使用块和线程索引映射矩阵索引

目录 1. 解决的问题 2. 分析 3. 方法 4. 代码示例 1. 解决的问题 利用块和线程索引&#xff0c;从全局内存中访问指定的数据。 2. 分析 通常情况下&#xff0c;矩阵是用行优先的方法在全局内存中线性存储的。如下。 8列6行矩阵&#xff08;nx,ny&#xff09;&#xff08;…

针对高可靠性和高性能优化的1200V硅碳化物沟道MOSFET

目录 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…

Arcgis画等高线

目录 数据准备绘制等高线3D等高线今天我们将学习如何在ArcGIS中绘制等高线地图。等高线地图是地理信息系统中常见的数据表现形式,它通过等高线将地形起伏展现得一目了然,不仅美观,还能提供重要的地形信息。 数据准备 在开始之前,确保已经准备好了高程数据,它通常以栅格数…

SolidWorks二次开发系列入门100篇之97-极点坐标

什么是极点 一个模型中的极点是指在某个方向上的最高或最低点。在三维模型中&#xff0c;通常有三个方向&#xff1a;x轴、y轴和z轴。因此&#xff0c;在x轴&#xff0c;y轴和z轴的正方向和负方向上&#xff0c;每个模型可能都有两个极点。极点通常是一些锐角或骨刺&#xff0…

【雕爷学编程】Arduino动手做(180)---Seeeduino Lotus开发板

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

C# XML文档相关操作

C# 创建XML文档 XML文档知识点创建XML文档向XML中追加读取XML文档读取带属性的XML文档删除节点 XML文档知识点 XML 是可扩展的标记语言 XML:用来存储数据 注意点&#xff1a;XML是严格区分大小写的&#xff0c;XML标签也是成对出现的 XML文档有且只能有一个根节点&#xff1b;…

根据URL批量下载文件并压缩成zip文件

根据url批量下载图片或者视频&#xff0c;只需要将图片的url和名称放到数组对象即可&#xff0c;例如&#xff1a; let fileArr [{fvUrl:https://image.xuboren.com/image/2023/07/26/1410829074764cdbaa4314a084eb749e.jpg,fvName: 图片名称},{fvUrl:https://image.xuboren.…

Hive数据仓库

数据仓库概念与起源发展由来 数仓概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;&#xff0c;是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持…

git-版本控制器

集中式版本控制工具&#xff08;不常用&#xff09; 版本库集中于中央服务器&#xff0c;team要联网才能工作&#xff08;下载代码&#xff09; SVN CVS 分布式版本控制工具 每个电脑上都有一个完整的版本库&#xff0c;工作时无需联网&#xff0c;可以把修改推送给其他人来…

java(Collection类)

文章目录 Collection接口继承树Collection接口及方法判断删除其它 Iterator(迭代器)接口迭代器的执行原理 foreach循环Collection子接口1&#xff1a;ListList接口特点List接口方法List接口主要实现类&#xff1a;ArrayListList的实现类之二&#xff1a;LinkedListList的实现类…

Pytorch个人学习记录总结 10

目录 优化器 优化器 官方文档地址&#xff1a;torch.optimhttps://pytorch.org/docs/stable/optim.html Debug过程中查看的grad所在的位置&#xff1a; model --> Protected Atributes --> _modules --> ‘model’ --> Protected Atributes --> _modules -…