首页 > 其他分享 >爬虫基本原理

爬虫基本原理

时间:2023-02-03 12:11:40浏览次数:29  
标签:多线程 网页 基本原理 爬虫 Session 线程 GIL

爬虫概述

获取网页并提取和保存信息的自动化程序

1、获取网页

urllib、requests等库
向网站的服务器发送一个请求,服务器返回网页源码

2、提取信息

分析源代码,从中提取我们需要的数据
通用方法:正则表达式
根据网页结构提取信息:Beautiful Soup、pyquery、lxml等

3、保存数据

保存为TXT文本、JSON文本、数据库或者远程服务器

注意事项

  • JavaScript渲染的页面

urllib与requests只能得到HTML代码,而有时整个网页是由JavaScript渲染,所以抓取的网页与看到的网页不同

解决方法

分析源代码后台Ajax接口,也可以使用Selenium、Splash、Pyppeteer、Playwright库来模拟JavaScript渲染

静态网页与动态网页

静态网页:由HTML代码编写,不能与用户进行人机交互
动态网页:由HTML,JSP,PHP,Python等语言编写,可以动态解析URL中的参数的变化,关联数据库并动态呈现不同的页面内容

  • 登录与注册

动态网页经典应用场景:用户登录与注册
HTTP的特点:无状态,对事务处理没有记忆能力
这一特点也使得要登陆才能看到的网页这一限制变得麻烦,需要不断重新传递请求
为了解决这一问题,出现了Session与Cookie

  • Session与Cookie

Session:在服务器端储存特定用户Session所需的属性及配置信息,当用户再次请求时,能通过这一Session进行访问,从而达到身份验证的目的
Cookie:在客户端储存的验证信息,为了鉴别用户身份、进行Session跟踪

代理

当爬虫访问频率过高时会被服务器封IP,此时可以将本机的IP伪装一下,让服务器识别不出请求是由我们本机发起的
代理服务器:Proxy Server,网络信息的中转站

多线程与多进程

进程:可以独立运行的程序单位,是线程的集合
线程:一个进程可以同时处理很多任务,例如浏览器可以同时打开很多窗口,其中播放音乐是一个线程,播放视频也是一个线程。线程是操作系统进行运算调度的最小单位,是进程的最小运行单位。

多进程:同时运行多个进程
多线程:同上

  • 并发与并行

并发:多个线程对应的多条指令被快速轮换地执行(三心二意,一个处理器一会处理这个线程,一会处理另外一个线程)
并行:同一时刻有多条指令在多个处理器上同时执行(一心一意,一个处理器一直处理一个线程,需要多个处理器)

  • 加快爬虫速度的方法

爬虫在向服务器发送请求后,必须等待服务器返回响应,属于IO密集型任务,可以启用多线程,在等待服务器返回请求时去处理其它线程,提高整体爬取效率

  • Python中的多线程与多进程

Python中GIL限制导致同一时刻只能运行一个线程,使得Python多线程无法发挥多核并行的优势,但是可以并发(可以用于爬虫)

GIL

GIL:Global Interpreter Lock,全局解释器锁,出于对数据安全的考虑
GIL可以看作是通行证,并且在一个Python进程中,GIL只有一个。线程没有通行证,就不允许执行
线程的执行方式:

  • 获取GIL
  • 执行对应线程的代码
  • 释放GIL

标签:多线程,网页,基本原理,爬虫,Session,线程,GIL
From: https://www.cnblogs.com/KeepEarlyHours/p/17088719.html

相关文章

  • 苦读书网站小说爬虫
    看小说消磨时间,但是广告太多了,且大多都是不健康的广告,本着无聊练手的想法写了个小说爬虫,可以爬取小说并按小说名章节目录存储网站是众多盗版网站中的一个爬取效果如......
  • HTTP基本原理
    1.1HTTP基本原理URI和URLURI:UniformResourseIdentifierURL:UniformResourseLocatorURL的格式scheme://[username:password@]hostname[:port][/path][;......
  • python爬虫入门脚本示例
    例如在某个目录xx下,有个普通的文件,有些文件后缀*.txt,有的却没有后缀名。现在写一个程序希望将xx目录下没有后缀名的文件改成*.txt结尾。知识点:需要用到python的os模块直接......
  • Kantana:下一代爬虫和爬虫框架
    介绍•快速且完全可配置的网络爬取•标准和无头模式支持•JavaScript解析/爬取•可定制的自动填表•范围控制-预配置字段/正则表达式•可定制的输出-预配置的字段•输入-......
  • 浅谈爬虫开发中几种形式的cookie的互相转换与利用
    前言在我们写爬虫的过程中,cookie一般是我们最经常接触到的东西。而由于在爬虫过程中的各个阶段的难度往往不同,所以我们很多时候会采用浏览器、requests等等各种方案来在采......
  • 爬虫经验
    示例网站:  1、点页码只有后一部分start=1改变  2、点步长只有第一次url改变  构造方法 :尝试在1后加上2的一部分 ......
  • 爬虫工具(tkinter+scrapy+pyinstaller)
    需求介绍输入:关键字文件,每一行数据为一爬取单元。若一行存在多个and关系的关键字,则用|隔开处理:爬取访问6个网站的推送,获取推送内容的标题,发布时间,来源,正文第一段(不是图片......
  • python爬虫(三)- HTML解析之BeautifulSoup4
    BeautifulSoup可以从HTML、XML中提取数据。官网https://www.crummy.com/software/BeautifulSoup/官方中文文档https://www.crummy.com/software/BeautifulSoup/bs4/doc.......
  • [Python] 爬虫系统与数据处理实战 Part.4 数据库
    表单<form>...</form>创建HTML表单用于向服务器提交数据登录方式form-datax-www-form-urlencodedajax以json方式提交数据登录是为了得到cookie登录成功后Hea......
  • [Python] 爬虫系统与数据处理实战 Part.3 多线程和分布式
    为什么用快反爬虫 多线程复杂性资源、数据的安全性:锁保护原子性:数据操作是天然互斥的同步等待:wait()、notify()、notifyall()死锁:多个线程对资源互锁容灾:任......