如何用六步教会你使用python爬虫爬取数据

2023-05-16

前言:

用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。

python爬出六部曲

第一步:安装requests库和BeautifulSoup库:

在程序中两个库的书写是这样的:

import` `requests``from` `bs4 ``import` `BeautifulSoup

由于我使用的是pycharm进行的python编程。所以我就讲讲在pycharm上安装这两个库的方法。在主页面文件选项下,找到设置。进一步找到项目解释器。之后在所选框中,点击软件包上的+号就可以进行查询插件安装了。有过编译器插件安装的hxd估计会比较好入手。具体情况就如下图所示。

img

img

第二步:获取爬虫所需的header和cookie:

我写了一个爬取微博热搜的爬虫程序,这里就直接以它为例吧。获取header和cookie是一个爬虫程序必须的,它直接决定了爬虫程序能不能准确的找到网页位置进行爬取。

首先进入微博热搜的页面,按下F12,就会出现网页的js语言设计部分。如下图所示。找到网页上的Network部分。然后按下ctrl+R刷新页面。如果,进行就有文件信息,就不用刷新了,当然刷新了也没啥问题。然后,我们浏览Name这部分,找到我们想要爬取的文件,鼠标右键,选择copy,复制下网页的URL。就如下图所示。

img

复制好URL后,我们就进入一个网页Convert curl commands to code。这个网页可以根据你复制的URL,自动生成header和cookie,如下图。生成的header和cookie,直接复制走就行,粘贴到程序中。

img

#爬虫头数据``cookies ``=` `{``  ``'SINAGLOBAL'``: ``'6797875236621.702.1603159218040'``,``  ``'SUB'``: ``'_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V'``,``  ``'SUBP'``: ``'0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ'``,``  ``'_s_tentry'``: ``'www.baidu.com'``,``  ``'UOR'``: ``'www.hfut.edu.cn,widget.weibo.com,www.baidu.com'``,``  ``'Apache'``: ``'7782025452543.054.1635925669528'``,``  ``'ULV'``: ``'1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256'``,``}``headers ``=` `{``  ``'Connection'``: ``'keep-alive'``,``  ``'Cache-Control'``: ``'max-age=0'``,``  ``'Upgrade-Insecure-Requests'``: ``'1'``,``  ``'User-Agent'``: ``'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25'``,``  ``'Accept'``: ``'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'``,``  ``'Sec-Fetch-Site'``: ``'cross-site'``,``  ``'Sec-Fetch-Mode'``: ``'navigate'``,``  ``'Sec-Fetch-User'``: ``'?1'``,``  ``'Sec-Fetch-Dest'``: ``'document'``,``  ``'Accept-Language'``: ``'zh-CN,zh;q=0.9'``,``}``params ``=` `(``  ``(``'cate'``, ``'realtimehot'``),``)

复制到程序中就像这样。这是微博热搜的请求头。

第三步:获取网页:

我们将header和cookie搞到手后,就可以将它复制到我们的程序里。之后,使用request请求,就可以获取到网页了。

#获取网页``response ``=` `requests.get(``'https://s.weibo.com/top/summary'``, headers``=``headers, params``=``params, cookies``=``cookies)

第四步:解析网页:

这个时候,我们需要回到网页。同样按下F12,找到网页的Elements部分。用左上角的小框带箭头的标志,如下图,点击网页内容,这个时候网页就会自动在右边显示出你获取网页部分对应的代码。

img

img

如上图所示,我们在找到想要爬取的页面部分的网页代码后,将鼠标放置于代码上,右键,copy到selector部分。就如上图所示。

第五步:分析得到的信息,简化地址:

其实刚才复制的selector就相当于网页上对应部分存放的地址。由于我们需要的是网页上的一类信息,所以我们需要对获取的地址进行分析,提取。当然,就用那个地址也不是不行,就是只能获取到你选择的网页上的那部分内容。

#pl_top_realtimehot > table > tbody > tr:nth-child(1) > td.td-02 > a``#pl_top_realtimehot > table > tbody > tr:nth-child(2) > td.td-02 > a``#pl_top_realtimehot > table > tbody > tr:nth-child(9) > td.td-02 > a

这是我获取的三条地址,可以发现三个地址有很多相同的地方,唯一不同的地方就是tr部分。由于tr是网页标签,后面的部分就是其补充的部分,也就是子类选择器。可以推断出,该类信息,就是存储在tr的子类中,我们直接对tr进行信息提取,就可以获取到该部分对应的所有信息。所以提炼后的地址为:

#pl_top_realtimehot > table > tbody > tr > td.td-02 > a

这个过程对js类语言有一定了解的hxd估计会更好处理。不过没有js类语言基础也没关系,主要步骤就是,保留相同的部分就行,慢慢的试,总会对的。

第六步:爬取内容,清洗数据

这一步完成后,我们就可以直接爬取数据了。用一个标签存储上面提炼出的像地址一样的东西。标签就会拉取到我们想获得的网页内容。

#爬取内容``content``=``"#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"

之后我们就要soup和text过滤掉不必要的信息,比如js类语言,排除这类语言对于信息受众阅读的干扰。这样我们就成功的将信息,爬取下来了。

fo ``=` `open``(``"./微博热搜.txt"``,``'a'``,encoding``=``"utf-8"``)``a``=``soup.select(content)``for` `i ``in` `range``(``0``,``len``(a)):``  ``a[i] ``=` `a[i].text``  ``fo.write(a[i]``+``'\n'``)``fo.close()

我是将数据存储到了文件夹中,所以会有wirte带来的写的操作。想把数据保存在哪里,或者想怎么用,就看读者自己了。

爬取微博热搜的代码实例以及结果展示:

import` `os``import` `requests``from` `bs4 ``import` `BeautifulSoup``#爬虫头数据``cookies ``=` `{``  ``'SINAGLOBAL'``: ``'6797875236621.702.1603159218040'``,``  ``'SUB'``: ``'_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V'``,``  ``'SUBP'``: ``'0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ'``,``  ``'_s_tentry'``: ``'www.baidu.com'``,``  ``'UOR'``: ``'www.hfut.edu.cn,widget.weibo.com,www.baidu.com'``,``  ``'Apache'``: ``'7782025452543.054.1635925669528'``,``  ``'ULV'``: ``'1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256'``,``}``headers ``=` `{``  ``'Connection'``: ``'keep-alive'``,``  ``'Cache-Control'``: ``'max-age=0'``,``  ``'Upgrade-Insecure-Requests'``: ``'1'``,``  ``'User-Agent'``: ``'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25'``,``  ``'Accept'``: ``'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'``,``  ``'Sec-Fetch-Site'``: ``'cross-site'``,``  ``'Sec-Fetch-Mode'``: ``'navigate'``,``  ``'Sec-Fetch-User'``: ``'?1'``,``  ``'Sec-Fetch-Dest'``: ``'document'``,``  ``'Accept-Language'``: ``'zh-CN,zh;q=0.9'``,``}``params ``=` `(``  ``(``'cate'``, ``'realtimehot'``),``)``#数据存储``fo ``=` `open``(``"./微博热搜.txt"``,``'a'``,encoding``=``"utf-8"``)``#获取网页``response ``=` `requests.get(``'https://s.weibo.com/top/summary'``, headers``=``headers, params``=``params, cookies``=``cookies)``#解析网页``response.encoding``=``'utf-8'``soup ``=` `BeautifulSoup(response.text, ``'html.parser'``)``#爬取内容``content``=``"#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"``#清洗数据``a``=``soup.select(content)``for` `i ``in` `range``(``0``,``len``(a)):``  ``a[i] ``=` `a[i].text``  ``fo.write(a[i]``+``'\n'``)``fo.close()

在这里插入图片描述

总结

到此这篇关于如何用六步教会你使用python爬虫爬取数据的文章就介绍到这了,更多相关python爬虫爬取数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

如果对Python感兴趣的话,可以试试我的学习方法以及相关的学习资料
需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用六步教会你使用python爬虫爬取数据 的相关文章

  • C语言学习第二天

    VS上的编译 xff1a ctrl 43 F7或者ctrl 43 Fn 43 F7 运行 xff1a ctrl 43 F5或者ctrl 43 Fn 43 F75 调试 xff1a ctrl 43 F10或者ctrl 43 Fn 43 F10
  • 引发了异常: 读取访问权限冲突。**pStu_Head** 是 0x55BAA6E0。

    问题 xff1a 这几天在研究一个图书馆信息管理系统的代码 xff0c 结果在第一步就出错 xff0c 一直报错 其中的 deroy list create函数 是为一个结构体指针申请内存空间 xff0c 并对其该结构体的成员变量进行赋值
  • xxx不在 sudoers 文件中。此事将被报告。

    出现此类问题是因为当前用户未被授予sudo权限 xff0c 可通过以下步骤添加sudo权限 1 xff0c 通过su命令切换到root用户 注 xff1a 输入密码的过程屏幕上不会有输出 2 xff0c 在终端输入 visudo xff0c
  • Centos系统中使用Firefix播放视频

    这几天想尝试在Linux系统中使用Firefix来看视频 xff0c 在网上找了很多方法 xff0c 什么安装flash xff0c 安装FFmpeg视频解码器的 xff0c 费了很多时间也没有成功 xff0c 最后终于找到方法了 xff0
  • uboot源码分析1-启动第一阶段-2.5.uboot和系统移植第5部分-朱有鹏-专题视频课程...

    uboot源码分析1 启动第一阶段 2 5 uboot和系统移植第5部分 6166人已学习 课程介绍 本课程为uboot学习的第5部分 xff0c 主要内容是uboot启动的第一阶段start S文件中的汇编初始化部分 学习本部分的主要目标
  • java关于对象比较---equals与hashCode详解

    目录 前言 一 equals方法 二 hashCode 1 什么是hashCode 2 hashCode的使用 1 相等值的hashCode一定相等 2 不同的值 hashCode也可能相等的情况 三 为什么hashCode和equals要
  • 状态码500问题

    1 从客户端解决500内部服务器错误是由服务器造成的 xff0c 但也可以从客户端尝试解决 步骤如下 xff1a 1 xff09 清除缓存 xff0c 并删除Cookie后 xff0c 重新启动浏览器 2 xff09 把它作为一个504的错
  • MapReduce详解

    目录 xff08 一 xff09 MapReduce的基本知识 xff08 二 xff09 MapReduce计算框架概述 xff08 三 xff09 MapReduce 具体计算过程 xff08 一 xff09 MapReduce的基本知
  • 进程(线程)调度及调度的九种算法。

    2 1 进程调度 进积 线程 调度即处理机调度 一般在大型批 处理系统中配有作业调度 xff0c 而其他系统中 xff0c 通常无须配置作业调度 xff1b 而在采用虚拟存储管理的操作系统中 xff0c 中级调度被页面调入策略 页面置换策略
  • 网络配置:vlan配置

    一 进入管理员系统并修改交换机名字 system 进入管理员系统 sysname XX 修改名字 二 设置PC端口 vlan XXX 配置单个vlan 例 xff1a vlan 10 创建vlan10 vlan batch XXX XXXX
  • 51单片机——LCD12864

    目录 LCD12864简介 特征 工作参数 LCD12864引脚说明 LCD12864常用指令集 基本指令 扩充指令 字符表 汉字显示地址编排 编辑 绘图地址与汉字显示编排示意图 程序设计 图形显示程序 字符显示程序设计 LCD12864简
  • Windows10系统的启动流程

    名词解释 xff1a windows boot manager xff1a 是windows启动管理器 启动管理器 xff08 boot manager xff09 是windows引导程序 grub lio的 引导操作系统启动的一段程序
  • xshell 双击没有反应

    xshell双击无反应 xff08 解决办法 xff09 1 打开服务 xff1a 打开命令行窗口 xff08 win 43 r 输入cmd xff09 xff0c 打开服务 xff08 输入services msc xff09 2 在服务
  • Linux下的yum升级(升级到高版本)

    Linux下的yum怎么升级 xff1f 1 备份默认的yum mv etc yum repos d etc yum repos d backup 2 设置新的yum目录 mkdir etc yum repos d amp amp cd e
  • (成功-桌面特简单,但右键不能打开应用)Xmanager 5远程连接CentOS7图形化界面

    有yum grouplist上面2个文件中的GNOME Desktop 就不需要再单独安装 Desktop 了 yum y groupinstall 34 X Window System 34 yum groupinstall 34 GNO
  • uboot源码分析2-启动第二阶段-2.6.uboot和系统移植第6部分-朱有鹏-专题视频课程...

    uboot源码分析2 启动第二阶段 2 6 uboot和系统移植第6部分 5873人已学习 课程介绍 本课程为uboot学习的第6部分 xff0c 主要内容是uboot启动的第二阶段start armboot函数 本阶段是开发板级别的硬件初
  • gitHub无法下载的解决方法

    小技巧 有时候通过git clone从github上更新代码失败 比如 git clone https github com xxx git 提示下载失败 可以尝试把https 换成 git git clone git github com
  • python中类和函数变量的 (作用域大小、使用方法)

    usr bin python coding UTF 8 class Employee 39 所有员工的基类 39 TotalCount 61 0 name 61 34 张三 34 def init self A1 A2 初始化文件名Empl
  • Python 中%d,%s等特殊符号的含义

    常见的格式化符号如下表 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 解决服务器时间Local time和RTC time不一致的问题

    今天遇到了一个问题 xff0c 发现程序读取的时间比实际的时间快了几分钟 执行 timedatectl status 发现 Local time比实际的快 xff0c 但是RTC time是准确的 各种google也没搞懂怎么回事 xff0

随机推荐

  • python中的copy.copy和copy.deepcopy

    1 浅copy时 xff0c 1级的值和个数永远不会变化 xff0c 但是如果1级不是具体的值 xff0c 是集合 列表等时2级的子值会变化 2 深deepcopy时 xff0c b则会有自己的独立空间 xff0c 不会再受a任何影响 一个
  • Python中的函数参数有冒号 声明后有-> 箭头

    在一些Python的工程项目中 xff0c 我们会看到函数参数中会有冒号 xff0c 有的函数后面会跟着一个箭头 xff0c 你可能会疑惑 xff0c 这些都是什么东西 xff1f 其实函数参数中的冒号是参数的类型建议符 xff0c 告诉程
  • 安装requests ------必须install packages之后才能import有效

    1 pip3 6 install i https pypi doubanio com simple trusted host pypi doubanio com target 61 root soft999 python3 6 6 yp3
  • pycharm如何快速显示1级菜单 方法函数列表

    61 61 61 61 61 61 61 方法1 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • WPS显示 只奇数偶数行方法

    1 空白行输入 xff1a 61 IF MOD ROW 2 61 1 34 奇 34 34 偶 34 2 再自动筛选即可
  • uboot如何启动内核-2.7.uboot和系统移植第7部分-朱有鹏-专题视频课程

    uboot如何启动内核 2 7 uboot和系统移植第7部分 4221人已学习 课程介绍 本课程为uboot学习的第7部分 xff0c 主要讲解uboot启动内核的细节 课程中集中讲解了zImage uImage的区别和联系 xff0c d
  • Java的lambda表达式

    1 Java的lambda表达式 Java小案例 xff1a 原始写法 span class token keyword package span span class token namespace com span class toke
  • equals方法和hashcode方法

    一 Object都有哪些方法 xff1f 1 xff0e clone方法 保护方法 xff0c 实现对象的浅复制 xff0c 只有实现了Cloneable接口才可以调用该方法 xff0c 否则抛出CloneNotSupportedExcep
  • podman容器开机自启

    podman容器开机自启 管理员开机自启 拉取busybox镜像作测试 root 64 localhost podman pull busybox Resolved 34 busybox 34 as an alias etc contain
  • Hadoop基础操作--查询集群的存储系统信息

    通过HDFS监控服务可以查询到大量相关信息 xff0c HDFS的监控服务是通过节点 xff08 NameNode xff09 的端口50070来进行访问 例 xff1a 在浏览器地址栏输入 http master 50070 来展现当前H
  • MapReduce编程入门--用eclipse创建MapReduce工程

    这里我用的事eclipse对MapReduce进行编程 xff0c 首先需要下载相关的eclipse xff0c eclipse可以用于多种语言的开发 xff0c 这里我们需要用到的是Eclipse IDE for Java EE Deve
  • Mac使用VMware Fusion安装OpenWRT

    需要在Mac电脑上安装VMware Fusion xff0c 准备OpenWRT镜像 vmdk版本 xff08 img转vmdx方法可在我的csdn文章中找到 xff09 安装步骤 1 打开VMware Fusion点击左上角 43 打开
  • [网络工程师]-路由配置-BGP配置

    组建BGP网络是为了实现网络中不同AS之间的通信 配置BGP基本功能是组建BGP网络的最基本要求 xff0c 主要包括一下三部分 xff1a xff08 1 xff09 启动BGP进程 xff1a 只有先启动BGP进程 xff0c 才能开始
  • Linux--bash、fork、exec、进程替换相关命令

    目录 1 bash 2 fork 43 exec 例1 xff1a 3 fork 43 exec 例子2 1 bash linux bash是一个命令处理器 xff0c 通常运行于文本窗口中 xff0c 并能执行用户直接输入的命令 xff1
  • js,定时器,计时器

    let a 61 settimeout 61 gt console log 1 1000 1 xff0c 返回值是一个number标识 2 xff0c cleartimeout xff0c 和clearintenval都可以消除settim
  • commonjs模块和es6模块的区别

    es6模块在浏览器端和服务器端都可用 xff0c commonjs只适用于服务端 1 xff0c es6是编译时输出接口 xff08 接口在代码在解析阶段就已经生成 xff09 xff0c commonjs是运行时加载 xff0c 在脚本完
  • uboot的命令体系-2.8.uboot源码分析4-朱有鹏-专题视频课程

    uboot的命令体系 2 8 uboot源码分析4 3793人已学习 课程介绍 本课程为uboot学习的第8部分 xff0c 主要讲解uboot的命令体系 分析了uboot的命令定义和实现的方法 xff0c 教大家自己向uboot中添加自定
  • 浪潮服务器忘记管理口地址,远程配置raid,远程安装系统。

    如果浪潮服务器忘记了管理口地址 xff0c 可以通过设置临时IP地址进行服务器管理 xff08 必须保证服务器之前IPV4的获取方式为DHCP xff09 使用工具 xff1a tftpd32 xff08 网上可直接搜索下载 xff09 x
  • linux命令行——linux快速搜索历史命令

    一 需求描述 在执行命令时 xff0c 对于已经输入的历史命令 xff0c 可以通过关上下键进行翻找 xff0c 如果是最近几条 xff0c 很容易找到 xff0c 如果是很久之前的命令 xff0c 依旧使用上下键查找就会力不从心 二 解决
  • 如何用六步教会你使用python爬虫爬取数据

    前言 xff1a 用python的爬虫爬取数据真的很简单 xff0c 只要掌握这六步就好 xff0c 也不复杂 以前还以为爬虫很难 xff0c 结果一上手 xff0c 从初学到把东西爬下来 xff0c 一个小时都不到就解决了 python爬