python爬虫1:基础知识

python爬虫1:基础知识

前言

​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。

目录结构

文章目录

    • python爬虫1:基础知识
      • 1. 基础认知
        • 1.1 什么是爬虫?
        • 1.2 爬虫可以做什么?
        • 1.3 爬虫的主要流程
        • 1.4 爬虫需要学习什么?
      • 2. 网页相关知识
        • 2.1 html基础知识
        • 2.2 静态网页与动态网页
        • 2.3 常见的网页请求模式
      • 3. 其他基础知识
        • 3.1 数据库
        • 3.2 代理
      • 4. 总结

1. 基础认知

1.1 什么是爬虫?

​ 这里的爬虫,一般指的是网络爬虫,即可以自动去网络上爬取我们所需的内容的脚本程序,当然这里的自动其实是说你已经写好了程序。

1.2 爬虫可以做什么?

​ 爬虫有一句很关键的话:所见即所得。意思是你自己能在网上看见的,就是可以爬取的内容。这里需要说明一下:一个网站,你是普通用户,那么你写的爬虫也是用你自己普通用户的身份,那么只能爬取普通用户可以看见的内容,那些vip用户的内容你无法爬取(如果想要爬取,要么换一个用户账号,要么嘿嘿嘿)

在这里插入图片描述

1.3 爬虫的主要流程

​ 主要流程如下:

1. 确定目标:确定要爬取的网页/网站
2. 请求网页以获取网页源码
3. 解析网页源码以获取所需的内容
4. 将获取的内容保存到我们的本地

1.4 爬虫需要学习什么?

​ 如果你只是学来玩(我也是菜鸡),那么可以学习的内容其实不是很多,主要为:

  • 前端的基础知识(主要了解html、简单了解css和js)
  • 代理、ip池构建等基础知识也需要知道
  • python基础知识(这个肯定必须会)
  • requests请求库
  • lxml、bs4、pyquery、re解析库(一般会其中一两个即可,反正目的是相同的)
  • selenium库(动态处理必须会)
  • 数据库基础,会点简单的MySQL数据库基础就行了,不需要多深入(其实大部分时候用不到)
  • scrapy这个爬虫框架看自己需求

​ 嗯,学的东西不多,只有亿点点。

在这里插入图片描述
在这里插入图片描述

2. 网页相关知识

2.1 html基础知识

​ 这里简单说明一下html的基础知识,主要是方便看后面教程时大家都懂。

​ 首先,随便打开一个网页,鼠标右键,选择”查看源码“,你就可以html代码了:

在这里插入图片描述

​ 可以发现一个最简单的事实:html代码都是类似于<xxx>xxxx</xxxx>这样的形式,我们将它称之为标签,其可以分为两类:双标签或者单标签。双标签就是上图中那种,同一个名字会出现两次形成闭合,单标签自然只出现一次。

标签里面的字母自然具有其特殊意义。这里我肯定不会列完,只列几个最为重要的标签,也是爬虫时用到最多的标签:

  • a标签:超链接标签,即我们网页看到那种可以点击跳转的东东几乎都是a标签
    • 它有一个重要属性,名为href,其包好的值就是跳转的链接

在这里插入图片描述

  • img标签:图像标签,即我们网页上看到的那些图片几乎都是img标签
    • 它也有一个重要属性,即src,其包含了图片的下载地址

在这里插入图片描述

​ **其实,我们爬虫,爬取的就是网页中这些具有关键信息的代码内容,然后再去利用这些去获取所需。**比如我们获取图片,其实不是真的直接就把图片下载下来,而是先获取网页源码,接着获取图片链接,最后再去下载图片。

2.2 静态网页与动态网页

​ 现在网页常见的有两类:

  • 静态网页
    • 即我们打开网页,它直接就加载完了的,不会说你滚轮往下滚,会不停加载内容
    • 这类网页爬取较为简单,只要你能绕过反爬虫机制就可以了
  • 动态网页
    • 即我们打开网页,内容只加载了部分,你往下滑动,内容会不停更新,常见的网站比如百度图片之类的
    • 这类网页爬取比较困难,绕过反爬虫机制只是必须的一步,还需要进行动态处理

2.3 常见的网页请求模式

​ 最常见的两种请求方式:

  • GET请求

    • 比如你搜索某个东西都是GET请求

    • 其一般带有参数,比如百度搜索,你随便搜索一个,看看上面的网页链接,你会发现:在这里插入图片描述

    • 这时候,你就意识到:GET请求的参数都是透明的(这也是为什么不用于登录这样的表单页面的),并且参数前面一般带有一个标记字段,比如这里wd=xxxx

  • POST请求

    • 一般涉及到填写表单(登录之类的表单)都涉及到POST请求
    • POST请求肯定是隐藏看不见的,但是你想找到你提交的登录表单还是可以的,只是比较麻烦
    • 这里我举个例子,豆瓣登录,选择密码登录,随便输入一串,然后点击登录,不过在此时需要打开浏览器的”检查“功能(任何浏览器都有,但是可能名字不同,这里是Google),然后细心去找:在这里插入图片描述

3. 其他基础知识

3.1 数据库

​ 为什么需要学习数据库的基础知识,主要是方便管理爬取的内容/构建代理池。

但是,其实对于我们个人学习者来说,一般用不到数据库,普通的txt文件就够用了,因此学不学习还是看自己的需求。

3.2 代理

​ 为什么需要代理?主要目的是提高爬取速度。因为爬虫对于大部分网站来说就是害虫,因此如果你的脚本程序不限制访问速度,那么容易被判断出来是一个爬虫,就会被短时间禁掉ip。这其实属于爬虫与反爬的斗争。

​ 对于这个问题,我们可以构建代理池,即用网上别人提供的ip去访问,这样我们可以同时调用几百个ip去访问,即使一个ip一秒钟访问1次,那么速度也提升了。

​ 网上有免费的代理网站,不过肯定没有付费爽,但是建议大家使用免费的。

在这里插入图片描述

4. 总结

​ 好的,本篇文章主要梳理了一下学习爬虫的基础知识,并为大家介绍了主要用到的基础知识。下一篇就开始介绍python的请求库requests了。

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

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

相关文章

3.CNI网络

文章目录 CNI网络FlannelUDP模式VXLAN模式部署flannel CalicoCalico模式Calico部署 flannel 和 calico 区别 CNI网络 K8S 中 Pod 网络通信&#xff1a; Pod 内容器与容器之间的通信 在同一个 Pod 内的容器&#xff08;Pod 内的容器是不会跨宿主机的&#xff09;共享同一个网络命…

Redis内网主从节点搭建

Redis内网主从节点搭建 1、文件上传2、服务安装3、服务启动4、配置主从复制 1、文件上传 内网环境手动上传gcc-c、redis.tar文件 2、服务安装 # 解压 unzip gcc-c.zip unzip gcc_rpm.zip tar -zxvf redis-6.2.13.tar.gz# 安装 cd gcc_rpm/ rpm -ivh *.rpm --nodeps --force…

【HDFS】每天一个RPC系列----complete(二):客户端侧

上图给出了最终会调用到complete RPC的客户端侧方法链路(除去Router那条线了)。 org.apache.hadoop.hdfs.DFSOutputStream#completeFile(org.apache.hadoop.hdfs.protocol.ExtendedBlock): 下面这个方法在complete rpc返回true之前,会进行重试,直到超过最大重试次数抛异…

ChatGPT下架官方检测工具,承认无法鉴别AI内容

去年底&#xff0c;OpenAI 推出的 ChatGPT &#xff0c;带来了生成式人工智能涌现的热潮。它不仅能够协助完成撰写邮件、视频脚本、文案、翻译、代码等任务&#xff0c;还能通过学习和理解人类的语言来进行对话&#xff0c;并根据聊天的上下文进行互动。 但随之而来的争议也让人…

Service not registered 异常导致手机重启分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…

ruby调试

如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1&#xff0c; ruby 2&#xff0c;修改launch.json

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

近日&#xff0c;Zebec Protocol 创始人 Sam 作为嘉宾&#xff0c;与社区进行了以“Zebec 生态发展”为主题的 AMA 对话。Sam 在线上访谈上对 Zebec 路线图、Zebec 质押、NautChain通证进行了解读&#xff0c;并对 Zebec 的进展、生态建设的愿景进行了展望。本文将对本次 AMA 进…

Rocky(centos) jar 注册成服务,能开机自启动

概述 涉及&#xff1a;1&#xff09;sh 无法直接运行java命令&#xff0c;可以软连&#xff0c;此处是直接路径 2&#xff09;sh脚本报一堆空格换行错误&#xff1a;需将转成unix标准格式&#xff1b; #切换到上传的脚本路径 dos2unix 脚本文件名.sh 2&#xff09;SELINUX …

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…

【C# 基础精讲】C# 数据类型概述

在C#中&#xff0c;数据类型可以分为以下三大类&#xff1a;值类型、引用类型和指针类型。每种类型都具有不同的特点和适用场景&#xff0c;了解这些类型对于编写高效和稳健的C#程序至关重要。下面将依次介绍这三大类数据类型&#xff0c;并列出C#中常见的每种类型。 值类型 值…

【Linux命令详解 | cd命令】Linux系统中用于更改当前工作目录的命令

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 使用cd命令切换到特定目录2. 使用cd命令与路径相关的特殊字符3. 使用cd命令切换到包含空格的目录4. 使用cd命令切换到前一个和后一个目录5. 使用cd命令切换到用户的主目录6. 使用cd命令与绝对路径和相对路径 总结…

宁波银行最新内推码 MK4913

宁波银行最新内推码 MK4913 内推码&#xff1a; MK4913 内推二维码 &#xff1a; 网申路径&#xff1a; 网页端&#xff1a;登录宁波银行招聘官网&#xff1a; https://zhaopin.nbcb.com.cn 选择【校园招聘】-【招聘岗位】手机端&#xff1a;关注【宁波银行招聘】公众号&a…

【物理】带电粒子在磁场和电场中移动的 3D 轨迹研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

无涯教程-Perl - chdir函数

描述 此功能将当前工作目录更改为EXPR,如果未指定,则更改为用户的主目录。此函数调用等效于Unix命令 cd EXPR 。 语法 以下是此函数的简单语法- chdir EXPRchdir返回值 如果失败,此函数返回0,如果成功,则返回1。 例 以下是显示其基本用法的示例代码,假设您在/user/home/…

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么&#xff1f; 混沌工程&#xff08;Chaos Engineering&#xff09;的概念由 Netflix 在 2010 年提出&#xff0c;通过主动向系统中引入异常状态&#xff0c;并根据系统在各种压力下的行为表现确定优化策略&#xff0c;是保障系统稳定性的新型手段。…

CS 144 Lab Six -- building an IP router

CS 144 Lab Six -- building an IP router 引言路由器的实现测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Six 对应的PDF: Lab Checkpoint 5: building an IP router 引言 在本实验中&#xff0c;你将在现有的NetworkInterface基础上实现一个IP路由器&#xf…

Linux知识点 -- 进程间通信(二)

Linux知识点 – 进程间通信&#xff08;二&#xff09; 文章目录 Linux知识点 -- 进程间通信&#xff08;二&#xff09;一、System V共享内存1.原理2.申请共享内存3.System V共享内存的使用4.为共享内存添加访问控制 二、信号量&#xff08;概念理解&#xff09;1.概念2.信号量…

OpenCV之信用卡识别实战

文章目录 代码视频讲解模板匹配文件主程序(ocr_template_match.py)myutils.py 代码 链接: https://pan.baidu.com/s/1KjdiqkyYGfHk97wwgF-j3g?pwdhhkf 提取码: hhkf 视频讲解 链接: https://pan.baidu.com/s/1PZ6w5NcSOuKusBTNa3Ng2g?pwd79wr 提取码: 79wr 模板匹配文件 …

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务&#xff1f;1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本&#xff1a;使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本&#xff1a;默认使用systemd作…

【敏捷开发】测试驱动开发(TDD)

测试驱动开发&#xff08;Test-Driven Development&#xff0c;简称TDD&#xff09;是敏捷开发模式中的一项核心实践和技术&#xff0c;也是一种设计方法论。TDD有别于以往的“先编码&#xff0c;后测试”的开发模式&#xff0c;要求在设计与编码之前&#xff0c;先编写测试脚本…