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

Python爬虫(2) --爬取网页页面

文章目录

  • 爬虫
  • URL
  • 发送请求
    • UA伪装
    • requests
  • 获取想要的数据
    • 打开网页
  • 总结
    • 完整代码

爬虫

Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requests、BeautifulSoup、Scrapy 等)而成为实现爬虫的首选语言之一。

Python爬虫获取浏览器中的信息,实际上是模仿浏览器上网的行为。完成获取信息需要完成三步:

  1. 指定url
  2. 发送请求
  3. 获取你想要的数据

比如我们爬取一个网站的页面:

https://www.sogou.com/

URL

URL(Uniform Resource Locator,统一资源定位符)是互联网上用来标识资源的字符串,它告诉Web浏览器或其他网络程序如何访问特定的文件或网页。简单来说,URL就是网页的地址。

那我们怎么寻找网页的url呢?

浏览器中找到网页页面,点击按钮F12进入开发者控制台(Developer Console)。

在这里插入图片描述

第一步点击Network,第二步刷新页面,第三步滚动滚轮找到最上面的一项打开:

url2.png

我们可以看到:网页的url地址、以及它的请求方式是get请求、Status Code在200和300是属于正常的、类型是text/html形式的。

好,那我们先指定url地址:

url = "https://www.sogou.com/"

发送请求

找到网址之后,我们当然得要获取它,这样我们就需要申请访问它的网址。

访问别人,当然自己得有个身份,怎么为自己伪装一个身份呢?

UA伪装

在python内下载fake_useragent包,这里面是别人以及写好的UA,使用这个包会为我们随机提供一个身份。

pip install fake_useragent

下载好之后导入包:

import fake_useragent

接下来运用这个包来进行UA伪装:

head = {"User-Agent":fake_useragent.UserAgent().random		#"User-Agent"固定写法哦
}

这样我们就有身份来发生请求啦!

requests

在Python中,发生请求使用requests方法。使用这个方阿飞之前呢,我们也还需要安装一个requests包:

pip install requests

下载好之后导入包:

import requests

接下来我们来使用这个包来发送请求:

response = requests.get(url,headers=head)
#以head的伪装身份访问url,将返回的数据放在response对象内

这样我们就请求完成了。

获取想要的数据

之前我们在开发者控制台中看到,网页的类型是text/html形式的。

请求完成之后,我们将请求到的内容接收一下:

res_text = response.text
print(res_text)
--------------------
print(response.status_code)
#可以加上这个代码,验证请求是否成功:
200:请求成功。通常表示服务器成功返回了请求的网页。
404:未找到。通常表示服务器无法找到请求的资源(网页)。
500:内部服务器错误。通常表示服务器遇到了一个意外情况,导致其无法完成对请求的处理。

将接收到的内容打印出来。

打开网页

在PyCharm中,建立一个HTML文本,将接收打印出来的数据内容复制进HTML文本中:

打开网页.png

进入HTML文本,右上角会有浏览器浮现,选择你要使用的浏览器打开,就会进去获取的网页中。

总结

本篇介绍了:如何爬取网页的一个页面。

  1. 指定url
  2. 发送请求:requests请求方法
    1. UA伪装:使用fake_useragent包,为自己提供身份
  3. 获取想要的数据:将数据接收处理

完整代码

import fake_useragent
import requests
if __name__ == '__main__':#UA伪装  让你认为我是一个浏览器head = {"User-Agent":fake_useragent.UserAgent().random}# 1、指定urlurl = "https://www.sogou.com/"# 2、发送请求    返回的数据在response对象内response = requests.get(url,headers=head)#3、获取想要的数据res_text = response.textprint(res_text)

相关文章:

Python爬虫(2) --爬取网页页面

文章目录 爬虫URL发送请求UA伪装requests 获取想要的数据打开网页 总结完整代码 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requests、BeautifulSoup、Scrapy 等&#xf…...

【iOS】——探究isKindOfClass和isMemberOfClass底层实现

isKindOfClass 判断该对象是否为传入的类或其子类的实例 // 类方法实现,用于检查一个类是否属于另一个类或其父类链上的任何类。(BOOL)isKindOfClass:(Class)cls {// 从当前类开始,tcls将沿着元类的继承链向上遍历。for (Class tcls self->ISA(); …...

Python 热门面试题(七)

Python中如何拷贝对象?浅拷贝和深拷贝的区别是什么? 在Python中,拷贝对象是一个常见的需求,尤其是当你需要修改一个对象但又不想影响原始对象时。Python提供了几种拷贝对象的方法,其中最重要的是浅拷贝(sh…...

STM32项目分享:智能宠物喂食系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.com/video/BV1zy411z7…...

数据结构——栈的实现(java实现)与相应的oj题

文章目录 一 栈栈的概念:栈的实现:栈的数组实现默认构造方法压栈获取栈元素的个数出栈获取栈顶元素判断当前栈是否为空 java提供的Stack类Stack实现的接口: LinkedList也可以当Stack使用虚拟机栈,栈帧,栈的三个概念 二 栈的一些算…...

linux修改时区为CST

目录 第一步: 第二步: 第三步: 第一步: 备份原来的时区信息 [rootlocalhost ~]# mv /etc/localtime localtime.bak 第二步: 通过软链接将亚洲/上海 的时区信息 指导时区信息 [rootlocalhost ~]# ln -s /usr/share…...

【Spring Security】初识Spring Security

今天晚上因为一个项目问题,而正式开始学习Spring Security。 这个问题是“APP端的操作员应仅可查看管理后台的项目负责人分配给自己的计划”。 一、Spring Security的核心组件: Spring Security的核心组件包括:SecurityContextHolder、Auth…...

配置单区域OSPF

目录 引言 一、搭建基础网络 1.1 配置网络拓扑图如下 1.2 IP地址表 二、测试每个网段都能单独连通 2.1 PC0 ping通Router1所有接口 2.2 PC1 ping通Router1所有接口 2.3 PC2 ping通Router2所有接口 2.4 PC3 ping通Router2所有接口 2.5 PC4 ping通Router3所有接口 2.…...

SQL中的游标是什么?

在 SQL 中,游标(Cursor)是一种用于遍历结果集的数据库对象。它允许开发者在 SQL 查询的结果集中逐行或逐批处理数据。 具体来说,SQL 中的游标通常用于以下目的: 遍历结果集:当一个 SQL 查询返回多行结果时…...

7. LangChain4j如何使用统一api调用?

前言 当我们对接LangChain4j的时候,面对复杂的各种各样的大模型的api的对接,让很多开发者感到力不从心。在每个大模型的api都不一样的时候?该如何快捷的切换模型的使用呢? 这时,One-API应运而生,它以其简洁…...

RPM、YUM 安装 xtrabackup 8 (mysql 热备系列一)包含rpm安装 mysql 8 配置主从

RPM安装 percona-xtrabackup-80-8.0.35-30.1.el7.x86_64.rpm 官网: https://www.percona.com/ 下载地址: https://www.percona.com/downloads wget https://downloads.percona.com/downloads/percona-distribution-mysql-ps/percona-distribution-mysq…...

maven项目打成可运行的jar及pom中的依赖一同打包

maven项目打jar及pom中的依赖一同打包 最近开发中有个需求,不部署新的服务,只jar包执行 那maven项目中,代码如何以jar的方式运行、如何把代码打成jar、pom中的依赖如何与代码一同打到jar包中? 1、代码如何以jar的方式运行&…...

Gettler‘s Screep World 笔记 Ⅰ

夏促时候刚刚入坑,写个笔记叭~ 环境配置 参考 HoPGoldy 大佬的简书,先配置下开发环境 萌新去看大佬的详细教程,我这里比较简单,有前端基础的可以直接抄 VSCode 跳过 node 我配的是v18.18.2 换源 npm config set registry h…...

联合体(union)的定义以及如何与结构体(struct)不同

联合体(Union)是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型。但是,在任何给定的时间点,联合体只能存储其中的一个值;这意味着联合体的大小是其最大成员的大小,因为它必须足够…...

【Spark官方文档部分翻译】RDD编程指南(RDD Programming Guide)

写在前面 内容如何选择 本翻译只翻译本人认为精华的部分,本人认为的Spark的一些核心理念,编程思想。一些特别基础的操作包括但不限于搭建环境就不在此赘述了。 配套版本 本系列基于Spark 3.3.1,Scala 2.12.10,进行翻译总结 原…...

前端八股文 $set

为什么会有$set vue2中对数组中新增的属性是监听不到的 如图 vue 插件中有但是 视图中没有刷新 解决方法 解决就是 $set() 就是在数组中新增属性的时候可以重新渲染视图 具体的写法 写法 就是 第一个 是在那个对象上新增 第二个参数 是新增的属性 第三个参数是 新增的属性…...

Connecting weaviate with langflow across docker containers

题意:在Docker容器之间连接Weaviate与Langflow 问题背景: I am trying to build a local RAG application using Langflow. For my vectore store, I want to use a local Weaviate instance, hosted in a separate docker container on the same netwo…...

【linux vim使用说明】

基本概念 提示:本文是网络资源整理 模式: vim 有多种模式,每种模式都有不同的功能。 普通模式 (Normal Mode): 默认模式,用于导航和执行命令。插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。可视模式 (Visual Mode): 用于选择…...

cocos2d-x安装和项目

首先多方查找资料发现教程很简洁,发现对自己的操作方面没多大帮助,后来干脆去官网,好像也很简洁。基于这样一个原因,加上我首次碰cocos2d-x,决定记录一下整个流程,解决实际操作上的疑惑。 涉及的方面&…...

因果推断 | 双重机器学习(DML)算法原理和实例应用

文章目录 1 引言2 DML算法原理2.1 问题阐述2.2 DML算法 3 DML代码实现3.1 策略变量为0/1变量3.2 策略变量为连续变量 4 总结5 相关阅读 1 引言 小伙伴们,好久不见呀。 距离上次更新已经过去了一个半月,上次发文章时还信誓旦旦地表达自己后续目标是3周更…...

Flutter 开源库学习

网上看了好多歌词实现逻辑相关资料,封装比较的好的 就 flutter_lyric,核心类是LyricsReader,而且如果实现逐字逐句歌词编辑功能还需要自己实现很多细节 ,网友原话是 :歌词的功能真的是不少,写起来也是挺难的…...

自主巡航,目标射击

中国机器人及人工智能大赛 参赛经验: 自主巡航赛道 【机器人和人工智能——自主巡航赛项】动手实践篇-CSDN博客 主要逻辑代码 #!/usr/bin/env python #coding: utf-8import rospy from geometry_msgs.msg import Point import threading import actionlib impor…...

MySQL中EXPLAIN关键字详解

昨天领导突然问到,MySQL中explain获取到的type字段中index和ref的区别是什么。 这两种状态都是在使用索引后产生的,但具体区别却了解不多,只知道ref相比于index效率更高。 因此,本文较为详细地记录了MySQL性能中返回字段的含义、状…...

如何理解ref toRef和toRefs

是什么 ref 生成值类型的响应式数据可用于模板和reactive通过.value修改值 ref也可以像vue2中的ref那样使用 toRef 针对一个响应式对象(reactive)的prop创建一个ref两者保持引用关系 toRefs 将响应式对象(reactive封装)转换…...

【linux】kernel-trace

文章目录 linux kernel trace配置trace内核配置trace接口使用通用配置Events配置Function配置Function graph配置Stack trace设置 跟踪器tracer功能描述 使用示例1.irqsoff2.preemptoff3.preemptirqsoff linux kernel trace 配置 源码路径: kernel/trace trace内…...

【Golang 面试基础题】每日 5 题(一)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...

ETCD介绍以及Go语言中使用ETCD详解

ETCD介绍以及Go语言中使用ETCD详解 什么是etcd ETCD是一个分布式、可靠的key-value存储的分布式系统,用于存储分布式系统中的关键数据;当然,它不仅仅用于存储,还提供配置共享及服务发现;基于Go语言实现 。 etcd的特点 完全复制:集群中的每个节点都可以使用完整的存档高…...

03-用户画像+Elasticsearch

优点 es支持海量数据的写入和更新es可以和hadoop,hive及spark进行集成es支持hivesql的操作,可以通过hivesql将数据导入eses的在进行数据检索查询是速度比较快es是分布式存储 应用 全文检索 全文检索流程: 1-对文档数据(文本数据)进行分词 2-将分词…...

初学Mybatis之搭建项目环境

在连接 mysql 数据库时,遇到了个 bug,之前都能连上,但报错说换了个 OS 操作系统什么的 然后搜索怎么连接,找到了解决方法 MySQL MYSQL – 无法连接到本地MYSQL服务器 (10061)|极客教程 (geek-docs.com) 命令行输入 services.msc…...

JMeter使用小功能-(持续更新)

1、jmeter在同一个线程组内,uuid的复用 方式一: 方式二: 2、获得jMeter使用的线程总数 ctx.getThreadGroup().getNumberOfThreads()来表示活动线程总数 int threadNumctx.getThreadGroup().getNumThreads(); String threads Integer…...

大麦网的网站建设/互联网广告销售

我在mac下的vim打开文件经常报这样一个错误:Taglist: Failed to generate tags for /my/path/to/filectags: illegal option -- -^usage: ctags [-BFadtuwvx] [-f tagsfile] file ...之前一直没在意,仔细一看是报ctags的错误,只有taglist用到了ctags,所以肯定是taglist的问题了…...

苹果网站用flash做/上海seo顾问

第二章:SVM(支持向量机) - 理论文档中的代码错误值2。欢迎来到监督式机器学习的第二块踏脚石。本章再次分为两部分。第1部分(这一部分)讨论了理论,工作和调整参数。第2部分(这里)我们…...

私有云可以做网站/软文写作技巧及范文

👏👏👏 哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!😍😍😍 ⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过&#xf…...

国内做免费视频网站有哪些/浙江seo推广

本篇文章我们来讲讲如何对MySQL数据库进行更新操作,对数据库进行增删改查操作是我们必会的基础之一,会了这个增删改查我们可以在这基础上去编写更多的东西,废话不多说了,我们来看一下本篇文章的内容吧!1、第一种&#…...

wordpress 地址/凡科网免费建站

1。注册表中的HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\USBSTOR中, 罗列了USB移动存储设备的型号 2。注册表中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}\ 3.注册表中的HKEY_LOCAL_MACHINE\SYSTEM\C…...

网站建设 鼠标/东莞seo建站哪家好

事件类型: 错误 事件来源: VsJITDebugger 事件种类: 无 事件 ID: 4096 日期: 2012-11-16 事件: 5:10:19 用户: NT AUTHORITY\SYSTEM 计算机: MT-9808 描述:mysqld-nt.exe [9148] 中发生未处理的 win32 异常。 对此异常的实时调试失败&…...