python爬虫入门心得体会,python爬虫入门和实例

2023-10-31

爬虫不外乎是为了获取网络上的信息,要取得信息,你就得给给服务器发请求,然后服务器把信息发给你,这一步一般较为简单。服务器发给你的一般是一个html文件,拿到文件后,你可能会觉得这是什么乱七八糟的东西,怎么都看不懂。我觉得对于一个非计算机系的人来说,想要做点东西出来,最大的困难是缺的知识太多了,html看不懂,http原理也不懂。所以这时候你会发现你需要去学一点html,去w3cschool看一看教程,你并不需要懂很多,弄懂各种标签的含义,能看懂html文件里的内容就行。

拿到html文件,接下来你要做的就是提取信息,准确地说,是你感兴趣的信息。你需要两样东西,一样用来快速定位你要获取的信息在html源文件中的位置,让你知道要提取什么;另一样用来提取信息。第一样可以选firefox或chrome,都自带开发者功能,第二样可以用Beautiful Soup。所以你需要花一点时间了解开发者功能怎么用,以及Beautiful Soup这个库的用法。会发请求,会提取信息,这些就够了,赶紧做点东西,找点成就感,这样才能有动力继续做下去。比如可以做下载某些网站的图片,把知乎上的答案抓到本地。有点成就感之后就有动力更深入学习了。

在做的过程中,你可能会遇到一些困难,比如你拿到的html跟浏览器看到的html不一样,你上网找一找就会发现,你需要了解一个叫http请求头的东西。找一点资料看看,知道http请求头是怎么回事就行了,不需要完全弄懂http的原理,解决当下的问题才是最重要的,有什么不懂的稍后再补。学了点东西后,你就知道这怎么解决这个问题了,只需在发请求的时候加一个参数,带上http请求头即可,这叫做模拟浏览器的行为。把这个问题解决后,抓取大多数网站都没有问题了。成就感又提升了一点。

有时候你又会发现,有一些网站需要登录才能取得一些信息。找一找资料,你就会接触到“模拟登录”,“post请求”等名词。这时候,你又需要去学习一些http的知识,了解“get”,“post”是怎么回事,以及如何发post请求。为了方便处理http的相关东西,你最好学习一下requests这个库。学习之后,参照网上的代码,我相信模拟登录的问题也解决了。比如,你就可以模拟登录知乎,然后抓取知乎的首页看看,是不是跟你用浏览器中看到的一样?

继续深入,你就会发现这些也不够了,有些信息我需要点一下“更多”按钮才会加载,如何获取这些信息呢?这时候你就需要分析在点“更多”按钮的时候浏览器做了什么,然后去模拟浏览器的行为。如何分析呢?我一般用firebug,看看点击更多按钮的时候,浏览器做了什么,浏览器一般会发一个post请求,会带上一些参数,你需要知道的就是要带上哪些参数,发请求给谁。这一步可能会有点困难,可以慢慢体会怎么做。一旦越过了这这道坎,你就几乎可以取得任何你想要的信息了。

假设你已经成功了,得到了服务器传回来的数据,你可能会发现,这又跟html不一样了。这是一个叫json的东西,传回来的数据都在里面了,接下来就是要提取数据了。所以你又要去了解json是什么,如何用python处理json。

基本上做完这些,爬虫就算入了门。接下来为了提高性能,扩大规模,再去搞多线程,分布式什么的吧,这也是我接下来需要努力和学习的方向。

最后说一些感想:

1. 不要急于求成,编程虽然不难,但也没有那么简单,不要想着速成,特别是对于计算机基础不是很好的人。

2. 学习的过程中可能会遇到很多困难(上面可能没有提到),或许会有很多你没有接触的东西冒出来,善用google,一个个问题地解决,缺什么补什么。

3. 对于初学者来讲,最重要的不是去学各种吊炸天的框架,追最新的技术。技术,框架是学不完的,永远都会层出不穷,最重要的是把基础学好。很多时候你有一个问题解决不了,都是你某些方面的知识缺了。慢慢来,不要急,随着学习的深入,再回过头来看以前的问题,会有豁然开朗的感觉。<

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

python爬虫入门心得体会,python爬虫入门和实例 的相关文章

  • 基于Rockchip RK3588 Android12 SDK搭建自己的repo 仓库服务器

    基于Rockchip RK3588 Android12 SDK搭建自己的repo 仓库服务器 文章目录 基于Rockchip RK3588 Android12 SDK搭建自己的repo 仓库服务器 搭建自己的repo代码服务器 流程框图 环
  • Markdown自定义CSS样式

    前言 当我第一次接触到Markdown时 我就深深爱上了它 这简洁的界面 编程式的书写都令我爱不释手 最重要的是 还能够支持自定义html css 自定义CSS样式 说到Markdown 就不得不提及Typora这个软件 本例子即是在此软件
  • 解决vue3类型“{}”上不存在属性

    刚创建的一个Vue3和Ts的项目 结果使用Vscode打开后 修改了index vue文件就报错了 修改tsconfig json文件 在tsconfig json文件中添加一行代码 就是让ts识别vue文件 include src ts
  • Ubuntu虚拟机中网络中没有网卡

    由于断电等异常操作 导致vmware的ubuntu系统连接不到网络 ping www baidu com 提示 name or service not known 查看网卡配置 vi etc network interfaces 结果发现只
  • Circular placeholder reference 'server.port' in property definitions

    Exception in thread main java lang IllegalArgumentException Circular placeholder reference server port in property defin
  • Cannot run program "scripts\saveVersion.sh"

    用Maven 编译hadoop遇到以下错误 saveVersion sh script fails in windows cygwin hadoop yarn common 半天是个bug 解决方案如下 Index hadoop mapre
  • C++常用经典算法总结

    一 算法概述 排序算法可以分为两大类 非线性时间比较类排序 通过比较来决定元素间的相对次序 由于其时间复杂度不能突破O nlogn 因此称为非线性时间比较类排序 线性时间非比较类排序 不通过比较来决定元素间的相对次序 它可以突破基于比较排序
  • C#如何通过存储过程从数据库中获得数据

    存储过程就是在数据库中写好的函数 C 通过调用存储过程来获得数据 可以在一定程度上提高数据库的安全性 将一些重要的数据封装了起来 那么如何在C 中调用存储过程呢 一 存储过程 环境如下 1 数据库Itcast2014中包含表TblStude
  • VS的C++项目添加LAPACK库简便方法(注:64位+32位,且不用自己编译库)

    需要材料 1 已经编译好的库文件 dll文件和头文件 http icl cs utk edu lapack for windows lapack libraries 这个网站中有已经用minGW编译好的LAPACK库 lib 一共有三个 除
  • 实践DIV+CSS网页布局入门指南

    实践DIV CSS网页布局入门指南 你正在学习CSS布局吗 是不是还不能完全掌握纯CSS布局 通常有两种情况阻碍你的学习 第一种可能是你还没有理解CSS处理页面的原理 在你考虑你的页面整体表现效果前 你应当先考虑内容的语义和结构 然后再针对
  • uniapp使用jsZip打包多个url文件,下载为一个压缩包

    1 需求及前言 可选中多个文件 类型不限png doc xls ppt等 点击下载时 将选中的文件全部打包成一个压缩包给用户 本文讲解jszip这个插件的打包下载使用方法 2 下载插件 npm install file saver npm
  • kafka服务端常见报错

    打印错误ERROR日志 cat kafkaserver log grep i A3 ERROR 日志目录 1 x data 2 x data logs kedacom project namespace dol kafka dol kafk
  • c++四内存区

    c 程序执行时 内存分为四个区域 1 代码区 存放函数体的二进制代码 由操作系统管理 2 全局区 存放全局变量 静态变量和常亮 3 栈区 编译器自动分配释放 存放函数的参数和局部变量等 4 堆区 程序员分配和释放 若未释放 程序结束时有操作
  • # 关于idea中模块文件夹右下角没有蓝色小方块,pom文件显示橘色

    关于idea中模块文件夹右下角没有蓝色小方块 pom文件显示橘色 模块文件夹中右下角没有蓝色小方块 根本原因是因为模块文件夹中没有xxx iml文件 这个本人亲自试验过 将xxx iml文件删除后 模块文件夹右下角小蓝块立马消失 可以参考下
  • 玩好go的切片

    go的slice 入门就会遇到 但这个东西大多数人都是停留在简单的使用 一些干了好几年的老程序员都说不明白里面的道道 这里面坑不少 恰巧今天有空 好好整理下 永不踩坑 1 为什么要用切片 其他语言大多用的都是数组 在go中 数组的长度是不可
  • 尝试构建知识体系

    1 构建知识体系架构是需要 深入 广知 思考 整理 深入 需要反反复复 学致用 用致学 深度思考 锤炼打磨 不同角度不同方式去尝试思考 实践 广知 需要周围东西的敏感度 好学 求知 充满兴趣 我们积累的知识 能否形成体系 却依赖于我们能否做
  • detectron2的结构介绍及代码实现

    detectron2的结构介绍 上一篇文章 detectron2的简介和配置 d948142375的博客 CSDN博客 介绍了怎么配置detectron2 以下简称DET2 到一台ubuntu18 04的远程服务器 本文将介绍为了实现一个基
  • ResNet之残差结构的理解

    ResNet 论文 2015年提出的ResNet 2016年改进后的ResNet 博客 本人实现的2015 2016的ResNet网络复现 深度学习 残差resnet网络原理详解 ResNet详解 通俗易懂版 主干网络系列 2 ResNet
  • VRPTW

    Python解决VRPTW问题 文章目录 Python解决VRPTW问题 一 VRPTW问题是什么 二 Python代码解决VRPTW问题 2 1 引入库 2 2 参数的设置 2 3 算法部分 2 4 主函数 三 数据集和显示的结果图 3
  • 【PyTorch学习】分别使用Numpy和Tensor及Antograd实现机器学习

    本文分别用Numpy Tensor autograd来实现同一个机器学习任务 比较它们之间的异同及各自优缺点 从而加深大家对PyTorch的理解 一 使用Numpy实现机器学习 首先 我们用最原始的Numpy实现有关回归的一个机器学习任务

随机推荐

  • 浅析五种IO模型(包括IO多路复用)

    五种IO模型 同步阻塞IO Blocking IO 即传统的IO模型 同步非阻塞IO Non blocking IO 默认创建的socket都是阻塞的 非阻塞IO要求socket被设置为NONBLOCK 注意这里所说的NIO并非Java的N
  • oracle当中怎么保留两位小数

    1 round保留两位 round 四舍五入 最多保留两位 没有小数的时候不展示 select round 66 667 2 N1 from dual 2 trunc保留两位 trunc 直接截断 最多保留两位 没有小数的时候不展示 sel
  • Windows10 卸载更新GPU Driver

    Windows10 卸载更新GPU Driver 做项目时采集卡编程代码检查无误 而采集到的视频为黑屏 调试推测为GPU Driver需要更新版本 综合了官网教程 百度教程进行 将过程记录如下 第一步 设置系统还原点 创建系统还原点是为了避
  • 惊呼!阿里云云服务器ECS最低3折售卖啦

    11月22日 在云栖大会 广州峰会上 阿里云云服务器ECS宣布新一代产品普惠用户 进行日常优惠的调低 从现在开始 当您选购ECS新一代企业级实例买五年时将低至3折 以ECS企业级及入门级实例为例 5年长期购买的新优惠价格相较于之前 降低了4
  • linux查看sql执行计划,查看SQL执行计划常用方法

    不论是做为开发DBA还是维护DBA 总是或多或少地遇到SQL执行效率或者说SQL调优问题 查看执行计划是必须的 我一般用3种方法查看 一 explain plan for 举个例子就足以说明其用法了 gt explain plan for
  • greenplum 集群初始化问题总结

    greenplum 集群初始化及启动后报错总结 项目背景描述 因 Primary segment 无法恢复 在原实例存在的情况下重新初始化数据库新实例 此文章是真实项目实战中遇到的问题 我仅作为笔记记录问题与修复过程 请查看本博客的阅读者在
  • 两个基于C++-Qt的开源WEB框架

    1 tufao 项目地址 https github com vinipsmaker tufao 主页 http vinipsmaker github io tufao 介绍 Tuf o is a web framework for C th
  • CSS实现文字垂直居中

    一 问题描述 当高度固定或不固定时 单行或多行文本难以实现垂直居中 二 解决方法 1 使用line height属性 将line height设置与元素高度等高 局限性 只适用于单行文本 局限性大 代码 box height 100px l
  • mysql drop记录_MySQL 在线惊心动魄的drop 千万记录表字段

    需要操作一个线上的表 添加字段 先查看磁盘占据大小以及记录数 500W记录 3 3G磁盘空间 hy 3306 orcl20 53 33 gt select table name table rows data length index le
  • 夜莺监控系统部署企业微信机器人告警

    前言 前面我们写了邮件的告警 现在我们来写下企业微信的机器人高级 Git仓库 wechatrobot sender 步骤 创建机器人 创建内部群 gt 鼠标右击 添加机器人 新建机器人 点击新创建一个机器人 创建机器人 输入昵称点击确定即可
  • Verilog 多路选择器(MUX),锁存器(Latch)推荐写法

    Veriog中二选一MUX推荐写法 always a b sel if sel 1 b1 z a else z b MUX为组合逻辑 用always来描述的时候 敏感变量列表中要包含在块中出现的所有变量 如上面代码中的 a b sel 如果
  • 使用Spring boot 构建知识图谱及简单Java GUI学习笔记

    使用Spring boot 构建知识图谱及简单Java GUI学习笔记 一 学习目的 开发一个关于房地产法律相关的智能问答系统 1 在简单Java GUI界面中实现一个科大讯飞语音调用及知识图谱API调用 反馈查询结果 实现一个简单的dem
  • 特征提取算法

    特征提取 1 背景 2 边界预处理 Moore boundary tracing algorithm Chain Codes Freeman Chain Codes slope chain codes SCCs minimum perime
  • 华为OD机试 - 竖直四子棋(Java)

    题目描述 竖直四子棋的棋盘是竖立起来的 双方轮流选择棋盘的一列下子 棋子因重力落到棋盘底部或者其他棋子之上 当一列的棋子放满时 无法再在这列上下子 一方的4个棋子横 竖或者斜方向连成一线时获胜 现给定一个棋盘和红蓝对弈双方的下子步骤 判断红
  • 与ag-Grid一起使用的Vue组件

    ag Grid Vue组件 ag Grid Vue Component 现场演示 Live Demo https www ag grid com https www ag grid com 用Bower安装 Install with Bow
  • VMware虚拟机安装Windows Server 2008 R2

    想必同学们已经开学了 也都进入了军训阶段吧 而很多计算机网络专业的同学们要开始接触到Windows Server了 这也是计算机网络技术专业的专业基础课程 想当年我们实训课学习使用的好像是2008版的 也不晓得现在各个学校会用到哪个版本实操
  • matlab做三次拉格朗日插值多项式_MATLAB的插值与拟合

    一 插值 什么是插值 首先看一下 百度百科的定义 在离散数据的基础上补插连续函数 使得这条连续曲线通过全部给定的离散数据点 从古到今 百度百科的定义一直 欲哭无泪 这是啥意思 简而言之就是 我现在有n个点对应的函数值 但是我想知道 在这个区
  • 科研经验干货帖(包含文献阅读方法、论文书写和投递技巧以及回复审稿意见的注意事项)

    科研经验干货帖 科研小白自己整理科研大神国奖师兄的经验分享笔记 以便自己查看 科研的流程 发现问题 论文idea从这里开始 想要多产生idea要多阅读领域内最好的文章 重现他们的实验 然后解决这些文章存在的问题 因此后面会讲如何阅读文献 核
  • 用matlab画y=cos(x)函数(记录学习过程)

    初始代码 创建横坐标的数据点 x linspace 0 12 1000 计算纵坐标的数据点 y cos x 绘制曲线 plot x y r 设置坐标轴范围 xlim 0 12 ylim 1 1 给y坐标着色 set gca YColor g
  • python爬虫入门心得体会,python爬虫入门和实例

    爬虫不外乎是为了获取网络上的信息 要取得信息 你就得给给服务器发请求 然后服务器把信息发给你 这一步一般较为简单 服务器发给你的一般是一个html文件 拿到文件后 你可能会觉得这是什么乱七八糟的东西 怎么都看不懂 我觉得对于一个非计算机系的