python爬取网页的方法总结,python爬虫获取网页数据

大家好,小编来为大家解答以下问题,python爬取网页信息代码正确爬取不到,利用python爬取简单网页数据步骤,今天让我们一起来看看吧!

文章目录

      • 1.抓取网页源代码
      • 2.抓取一个网页源代码中的某标签内容
      • 3.抓取多个网页子标签的内容

Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能
在我们开始之前,我们需要安装一些环境依赖包,打开命令行
在这里插入图片描述
在这里插入图片描述
确保电脑中具有python和pip,如果没有的话则需要自行进行安装

之后我们可使用pip安装必备模块 requests

pip install requests

在这里插入图片描述
requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,requests 允许你发送 HTTP/1.1 请求。指定 URL并添加查询url字符串即可开始爬取网页信息

1.抓取网页源代码

以该平台为例,抓取网页中的公司名称数据,网页链接:https://www.crrcgo.cc/admin/crr_supplier.html?page=1
在这里插入图片描述
目标网页源代码如下:
在这里插入图片描述
首先明确步骤
1.打开目标站点
2.抓取目标站点代码并输出

import requests

导入我们需要的requests功能模块

page=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')

这句命令的意思就是使用get方式获取该网页的数据神码ai火车头伪原创网址。实际上我们获取到的就是浏览器打开百度网址时候首页画面的数据信息

print(page.text)

这句是把我们获取数据的文字(text)内容输出(print)出来

import requests
page=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')
print(page.text)

在这里插入图片描述
成功爬取到了目标网页源代码

2.抓取一个网页源代码中的某标签内容

但是上面抓取到的代码充满尖括号的一片字符,对我们没有什么作用,这样的充满尖括号的数据就是我们从服务器收到的网页文件,就像Office的doc、pptx文件格式一样,网页文件一般是html格式。我们的浏览器可以把这些html代码数据展示成我们看到的网页。
我们如果需要这些字符里面提取有价值的数据,就必须先了解标记元素
每个标记的文字内容都是夹在两个尖括号中间的,结尾尖括号用/开头,尖括号内(img和div)表示标记元素的类型(图片或文字),尖括号内可以有其他的属性(比如src)
在这里插入图片描述
标记内容文字才是我们需要的数据,但我们要利用id或class属性才能从众多标记中找到需要的标记元素。

我们可以在电脑浏览器中打开任意网页,按下f12键即可打开元素查看器(Elements),就可以看到组成这个页面的成百上千个各种各样的标记元素
在这里插入图片描述
标记元素是可以一层一层嵌套的,比如下面就是body嵌套了div元素,body是父层、上层元素;div是子层、下层元素。

<body>
    <div>十分钟上手数据爬虫</div>
</body>

回到抓取上面来,现在我只想在网页中抓取公司名这个数据,其他的我不想要
在这里插入图片描述
查看网页html代码,发现公司名在标签detail_head里面
在这里插入图片描述

import requests
req=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')

这两行上面解释过了,是获取页面数据

from bs4 import BeautifulSoup

我们需要使用BeautifulSoup这个功能模块来把充满尖括号的html数据变为更好用的格式,from bs4 import BeautifulSoup这个是说从bs4这个功能模块中导入BeautifulSoup,是的,因为bs4中包含了多个模块,BeautifulSoup只是其中一个

req.encoding = "utf-8"

指定获取的网页内容用utf-8编码

soup = BeautifulSoup(html.text, 'html.parser')

这句代码用html解析器(parser)来分析我们requests得到的html文字内容,soup就是我们解析出来的结果。

company_item=soup.find_all('div',class_="detail_head")

find是查找,find_all查找全部。查找标记名是div并且class属性是detail_head的全部元素

dd = company_item.text.strip()

strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。在这里就是移除多余的尖括号的html数据

最后拼接之后代码如下:

import requests
from bs4 import BeautifulSoup

req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")
req.encoding = "utf-8"
html=req.text
soup = BeautifulSoup(req.text,features="html.parser")
company_item = soup.find("div",class_="detail_head")
dd = company_item.text.strip()
print(dd)

在这里插入图片描述
最后执行结果成功的抓取到了网页中我们想要的公司信息,但是却只抓取到了一个公司,其余的则并未抓取到

所以我们需要加入一个循环,抓取网页中所有公司名,并没多大改变

for company_item in company_items:
    dd = company_item.text.strip()
    print(dd)

最终代码如下:

import requests
from bs4 import BeautifulSoup

req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")
req.encoding = "utf-8"
html=req.text
soup = BeautifulSoup(req.text,features="html.parser")
company_items = soup.find_all("div",class_="detail_head")
for company_item in company_items:
    dd = company_item.text.strip()
    print(dd)

在这里插入图片描述
最终运行结果查询出了该网页中所有的公司名

3.抓取多个网页子标签的内容

那我现在想要抓取多个网页中的公司名呢?很简单,大体代码都已经写出,我们只需要再次加入一个循环即可
查看我们需要进行抓取的网页,发现当网页变化时,就只有page后面的数字会发生变化。当然很多大的厂商的网页,例如京东、淘宝 它们的网页变化时常让人摸不着头脑,很难猜测。
在这里插入图片描述
在这里插入图片描述

inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="
for num in range(1,6):
    print("================正在爬虫第"+str(num)+"页数据==================")

写入循环,我们只抓取1到5页的内容,这里的循环我们使用range函数来实现,range函数左闭右开的特性使得我们要抓取到5页必须指定6

	outurl=inurl+str(num)
    req = requests.get(url=outurl)

将循环值与url拼接成完整的url,并获取页面数据

完整代码如下:

import requests
from bs4 import BeautifulSoup

inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="
for num in range(1,6):
    print("================正在爬虫第"+str(num)+"页数据==================")
    outurl=inurl+str(num)
    req = requests.get(url=outurl)
    req.encoding = "utf-8"
    html=req.text
    soup = BeautifulSoup(req.text,features="html.parser")
    company_items = soup.find_all("div",class_="detail_head")
    for company_item in company_items:
        dd = company_item.text.strip()
        print(dd)

在这里插入图片描述
成功的抓取到了1-5页所有的公司名(子标签)内容

最近一直在学习,但是学习的东西很多很杂,于是便把自己的学习成果记录下来,便利自己,帮助他人。希望本篇文章能对你有所帮助,有错误的地方,欢迎指出!!!喜欢的话,不要忘记点赞哦!!!

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

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

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

相关文章

希尔排序【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 希尔排序也是一种插入排序&#xff0c;它是简单插入排序经过改进之后的一个更高效的版本&#xff0c;也称为缩小增量排序。希尔排序在数组中采用跳跃式分组的策略&#xff0c;通过某个增量将数组元素划分为若干组&#xff0c;然后分…

docker私有仓库harbor

一、安装docker-compose yum install docker-compose -y 二、下载harbor安装包 tar -xf harbor-online-installer-v2.1.0.tgz cp harbor.yml.tmpl harbor.yml 三、修改harbor配置 [rootharbor ~]# vim harbor.ymlhostname: "修改为本机ip" harboradminpassword:…

Python文件操作与输入输出:从基础到高级应用

文章目录 &#x1f340;引言&#x1f340;文件操作基础&#x1f340;上下文管理器与文件自动关闭&#x1f340;文件的迭代与逐行读取&#x1f340;文件的其他常见操作&#x1f340;输入输出基础&#x1f340; 文件输入输出&#x1f340;格式化输出&#x1f340;高级文件操作&am…

cesium学习记录08-鼠标绘制多边形

上一篇学习了实体的一些基础知识&#xff0c;这一篇来学习鼠标绘制实体多边形的实现 一、方法一&#xff1a; 1&#xff0c;结果显示 贴地&#xff1a; 不贴地&#xff1a; 2&#xff0c;方法全部代码&#xff1a; 主方法&#xff1a; /*** 绘制多边形* param {Object} op…

UI设计师个人工作总结范文

UI设计师个人工作总结范文篇一 感受到了领导们“海纳百川”的胸襟&#xff0c;感受到了作为广告人“不经历风雨&#xff0c;怎能见彩虹”的豪气&#xff0c;也体会到了重庆广告从业人员作为拓荒者的艰难和坚定(就目前国内广告业而言&#xff0c;我认为重庆广告业尚在发展阶段并…

实战:工作中对并发问题的处理 | 京东物流技术团队

1. 问题背景 问题发生在快递分拣的流程中&#xff0c;我尽可能将业务背景简化&#xff0c;让大家只关注并发问题本身。 分拣业务针对每个快递包裹都会生成一个任务&#xff0c;我们称它为 task。task 中有两个字段需要关注&#xff0c;一个是分拣中发生的异常&#xff08;exp…

本地跑Mapreduce程序的相关配置

本地跑MapReduce程序需要配置的代码 为了在本地运行MapReduce程序&#xff0c;需要加如下的东西 在项目中创建一个如图所示的包&#xff1a;org.apache.hadoop.io.nativeio&#xff0c;并在该包下面创建一个名为&#xff1a;NativeIO的类&#xff08;注意&#xff1a;名字不能…

RabbitMQ:可靠消息传递的强大消息中间件

消息中间件在现代分布式系统中起着关键作用&#xff0c;它们提供了一种可靠且高效的方法来进行异步通信和解耦。在这篇博客中&#xff0c;我们将重点介绍 RabbitMQ&#xff0c;一个广泛使用的开源消息中间件。我们将深入探讨 RabbitMQ 的特性、工作原理以及如何在应用程序中使用…

第三章 图论 No.11二分图,匈牙利算法与点覆盖

文章目录 二分染色&#xff1a;257. 关押罪犯增广路径372. 棋盘覆盖 最小点覆盖376. 机器任务 最大独立集378. 骑士放置 最小路径点覆盖 二分染色&#xff1a;257. 关押罪犯 257. 关押罪犯 - AcWing题库 最大最小问题&#xff0c;一眼二分 答案的范围在 [ 1 , 1 e 9 ] [1, 1…

ReactDOM模块react-dom/client没有默认导出报错解决办法

import ReactDOM 模块“"E:/Dpandata/Shbank/rt-pro/node_modules/.pnpm/registry.npmmirror.comtypesreact-dom18.2.7/node_modules/types/react-dom/client"”没有默认导出。 解决办法 只需要在tsconfig.json里面添加配置 "esModuleInterop": true 即…

关于跨国文件传输需要了解的5点

我们在为企业客户解决各种IT问题的多年经验中&#xff0c;发现跨国文件传输一直是许多企业IT部门的难题。提升数据传输效率只是跨国文件传输的一个方面&#xff0c;还有更多的因素困扰着一些大型企业、集团。 作为企业文件传输的领先品牌&#xff0c;镭速(私有化部署方案&…

VectorStyler for Mac: 让你的创意无限绽放的全新设计工具

VectorStyler for Mac是一款专为Mac用户打造的矢量设计工具&#xff0c;它结合了功能强大的矢量编辑器和创意无限的样式编辑器&#xff0c;让你的创意无限绽放。 VectorStyler for Mac拥有直观简洁的用户界面&#xff0c;让你能够轻松上手。它提供了丰富的矢量绘图工具&#x…

flutter 常见的状态管理器

flutter 常见的状态管理器 前言一、Provider二、Bloc三、Redux四、GetX总结 前言 当我们构建复杂的移动应用时&#xff0c;有效的状态管理是至关重要的&#xff0c;因为应用的不同部分可能需要共享数据、相应用户交互并保持一致的状态。Flutter 中有多种状态管理解决方案&#…

机器学习深度学习——seq2seq实现机器翻译(数据集处理)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——从编码器-解码器架构到seq2seq&#xff08;机器翻译&#xff09; &#x1f4da;订阅专栏&#xff1a;机…

三菱plc 工程的系统参数fCPu参数与 可编程控制器的系统参数/CPu参数不一致。

三菱plc 工程的系统参数fCPu参数与 可编程控制器的系 统参数/CPu参数不一致。

掌握Python的X篇_30_使用python解析网页HTML

本篇将会介绍beutifulsoup4模块&#xff0c;可以用于网络爬虫、解析HTML和XML&#xff0c;对于没有接触过前端&#xff0c;不了解HTML是如何工作的&#xff0c;需要先解释一下什么事HTML。 1. HTML 网页中的各种布局等的背后都是非常简单的纯文本格式&#xff0c;那种格式称为…

Android的学习系列之Android Studio Setup安装

Android的学习系列之Android Studio Setup安装 [TOC](Android的学习系列之Android Studio Setup安装) 前言Android平台搭建总结 前言 还是项目需要&#xff0c;暂时搭建安卓的运行平台。 Android平台搭建 安装包 双击安装包&#xff0c;进入安装。 下一步 根据自己需求&a…

(7)(7.1) 使用航点和事件规划任务

文章目录 前言 7.1.1 设置Home位置 7.1.2 视频&#xff1a;制作并保存多路点任务 7.1.3 视频&#xff1a;加载已保存的多航点任务 7.1.4 使用说明 7.1.5 提示 7.1.6 自动网格 7.1.7 任务指令 7.1.8 任务结束 7.1.9 任务重置 7.1.10 MIS_OPTIONS 7.1.11 任务再出发 …

客户跟进轻松搞定:推荐一款功能全面的客户跟进软件

阅读本文您可以了解&#xff1a;1、如何选择客户跟进软件&#xff1b;2、简单好用的客户跟进软件推荐 客户跟进是建立并维护良好客户关系的关键步骤。通过定期的跟进&#xff0c;可以及时了解客户的需求和反馈&#xff0c;解决问题&#xff0c;提供支持&#xff0c;从而增强客…

ubuntu18.04下配置muduoC++11环境

1.安装muduo依赖的编译工具及库 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…