笔记-python爬虫概述

news2024/11/24 21:57:47

目录

常用第三方库
爬虫框架
动态页面渲染
    1. url请求分析
    2. selenium
    3. phantomjs
    4. splash
    5. spynner
爬虫防屏蔽策略
    1. 修改User-Agent
    2. 禁止cookies
    3. 设置请求时间间隔
    4. 代理IP池
    5. 使用Selenium
    6. 破解验证码

在这里插入图片描述

常用第三方库

对于爬虫初学者,建议在了解爬虫原理以后,在不使用任何爬虫框架的情况下,使用这些常用的第三方库自己实现一个简单的爬虫,这样会加深对爬虫的理解。

urllib和requests都是python的HTTP库,包括urllib2模块以巨大的复杂性代价获取综合性的功能。相比于urllib2,Requests模块更能简约的支持完整的简单用例。关于urllib和requests的优缺点和区别,大家可以去网上查一下。

BeautifulSoup和lxml都是python页面解析的库。BeautifulSoup 是基于 DOM 的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多。而lxml只会进行局部遍历,使用xpath能够很快定位标签。bs4 是用 python 写的,lxml 是 c 语言实现的,也决定了lxml比bs4要快。

该博客有比较全面的关于python爬虫常用第三方库的汇总,可做参考。
https://blog.csdn.net/woshisunchi/article/details/60877817
爬虫框架

python常用的爬虫框架就是scrapy和pyspider两个。
关于框架的使用方法及详细介绍,可参考官方文档。
动态页面渲染

1. url请求分析

(1)认真分析页面结构,查看js响应的动作;
(2)借助浏览器分析js点击动作所发出的请求url;
(3)将此异步请求的url作为scrapy的start_url或者yield reques再次进行抓取。

2. selenium

Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作,不同是Selenium可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。

Selenium可以根据我们的指令,让浏览器自动加载页面,获取需要的页面,甚至页面截屏,或者判断网站上某些动作是否发生。

Selenium自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。

3. phantomjs

使用selenium调用浏览器进行抓取页面时,由于要执行打开浏览器并渲染页面的操作,当进行大规模数据抓取时效率较低,无法满足需求。这时我们可以选择使用phantomjs。

PhantomJS是一个基于Webkit的"无界面"(headless)浏览器,它会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器更高效。

如果我们把Selenium和PhantomJS结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理JavaScript、Cookie、headers,以及任何我们真实用户需要做的事情。

4. splash

Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。

python连接splash的库叫做scrapy-splash,scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker。
5. spynner

spynner是一个QtWebKit的客户端,它可以模拟浏览器,完成加载页面、引发事件、填写表单等操作。
爬虫防屏蔽策略

1. 修改User-Agent

User-Agent是一种最常见的伪装浏览器的手段。

User-Agent是指包含浏览器信息、操作系统信息等的一个字符串,也称之为一种特殊的网络协议。服务器通过它判断当前访问对象是浏览器、邮件客户端还是网络爬虫。在request.headers里可以查看user-agent,关于怎么分析数据包、查看其User-Agent等信息,这个在前面的文章里提到过。

具体方法可以把User-Agent的值改为浏览器的方式,甚至可以设置一个User-Agent池(list,数组,字典都可以),存放多个“浏览器”,每次爬取的时候随机取一个来设置request的User-Agent,这样User-Agent会一直在变化,防止被墙。

2. 禁止cookies

cookie其实是储存在用户终端的一些被加密的数据,有些网站通过cookies来识别用户身份,如果某个访问总是高频率地发请求,很可能会被网站注意到,被嫌疑为爬虫,这时网站就可以通过cookie找到这个访问的用户而拒绝其访问。

通过禁止cookie,这是客户端主动阻止服务器写入。禁止cookie可以防止可能使用cookies识别爬虫的网站来ban掉我们。

在scrapy爬虫中可以设置COOKIES_ENABLES= FALSE,即不启用cookies middleware,不向web server发送cookies。

3. 设置请求时间间隔

大规模集中访问对服务器的影响较大,爬虫可以短时间增大服务器负载。这里需要注意的是:设定下载等待时间的范围控制,等待时间过长,不能满足短时间大规模抓取的要求,等待时间过短则很有可能被拒绝访问。

设置合理的请求时间间隔,既保证爬虫的抓取效率,又不对对方服务器造成较大影响。

4. 代理IP池

其实微博识别的是IP,不是账号。也就是说,当需要连续抓取很多数据的时候,模拟登录没有意义。只要是同一个IP,不管怎么换账号也没有用,主要的是换IP。

web server应对爬虫的策略之一就是直接将IP或者整个IP段都封掉禁止访问,当IP被禁封后,转换到其他IP继续访问即可。方法:代理IP、本地IP数据库(使用IP池)。

5. 使用Selenium

使用Selenium来模拟人工点击访问网站,是种很有效的防止被ban的方式。但是Selenium效率较低,不适合大规模数据抓取。

6. 破解验证码

验证码是现在最常见的防止爬虫的手段。有能力的小伙伴可以自己写算法破解验证码,不过一般我们可以花点钱使用第三方打码平台的接口,轻松实现验证码的破解。

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

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

相关文章

FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析

一、引言 由《音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB》可以知道,H.264 码流中的操作单位是位(bit),而不是字节。因为视频的传输和存贮是十分在乎体积的,对于每一个比特(bit&#xf…

CentOS安装Docker教程(包含踩坑的经验)

目录 一.基础安装 ▐ 安装Docker 二.启动Docker服务 三.配置Docker镜像加速 一.基础安装 在安装Docker之前可能需要先做以下准备 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-…

Modbus转Profibus网关在汽车行业的应用

一、前言 在当前汽车工业的快速发展中,汽车制造商正通过自动化技术实现生产的自动化,目的是提高生产效率和减少成本。Modbus转Profibus网关(XD-MDPB100)应用于汽车行业,主要体现在提升自动化水平、优化数据传输以及实…

Java8新特性stream的原理和使用

这是一种流式惰性计算&#xff0c;整体过程是&#xff1a; stream的使用也异常方便&#xff0c;可以对比如List、Set之类的对象进行流式计算&#xff0c;挑出最终想要的结果&#xff1a; List<Timestamp> laterTimes allRecords.stream().map(Record::getTime).filter…

第11章 规划过程组(收集需求)

第11章 规划过程组&#xff08;一&#xff09;11.3收集需求&#xff0c;在第三版教材第375~378页&#xff1b; 文字图片音频方式 第一个知识点&#xff1a;工具与技术 1、决策 投票 用于生成、归类和排序产品需求 独裁型决策制定 一个人负责为整个集体制定决策 多标准决策分析…

软件需求管理规程(DOC原件)

软件需求管理规程是确保软件开发过程中需求清晰、一致、可追踪的关键环节&#xff1a; 明确需求&#xff1a;项目初期&#xff0c;与利益相关者明确项目目标和需求&#xff0c;确保需求完整、无歧义。需求评审&#xff1a;组织专家团队对需求进行评审&#xff0c;识别潜在风险和…

DM达梦数据库存储过程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

Arduino - OLED

Arduino - OLED Arduino - OLED Arduino通过u8g2库驱动OLEDU8g2 驱动oled自定义中文字库 The OLED (Organic Light-Emitting Diode) display is an alternative for LCD display. The OLED is super-light, almost paper-thin, flexible, and produce a brighter and crisper…

【乐吾乐2D可视化组态编辑器】图形库、组件库

15 图形库 15.1 图纸 新建文件夹、新建图纸、删除文件夹、删除图纸 15.2 系统组件 乐吾乐图形库一共分为三大类&#xff1a;基础图形库、电力图形库、物联网图形库、2.5D图形库&#xff0c;总共约4000个图元&#xff0c;能满足大部分行业的基本需求。 格式有三种&#xff1a…

智慧法务引领:构筑数字化法治核心,塑造未来企业竞争力

在全球化及信息化时代背景下&#xff0c;企业面临的法律环境越来越复杂&#xff0c;法治数字化成为企业维护合法权益、提升市场竞争力的必然选择。智慧法务管理系统作为推动企业法治数字化转型的重要工具&#xff0c;不仅提高了法律服务效率&#xff0c;而且加强了企业的法律风…

百问网全志D1h开发板投屏功能实现

投屏功能实现 D1系列号称点屏神器&#xff0c;不仅能点屏&#xff0c;还能用于投屏。 源码准备 百问网为 【百问网D1h开发板】提供了投屏功能需要使用的源码&#xff0c;直接git下载即可&#xff1a; git clone https://github.com/DongshanPI/DongshannezhaSTU_DLNA_Scree…

MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解

MoneyPrinterPlus可以使用大模型自动生成短视频&#xff0c;我们可以借助Azure提供的语音服务来实现语音合成和语音识别的功能。 Azure的语音服务应该是我用过的效果最好的服务了&#xff0c;微软还得是微软。 很多小伙伴可能不知道应该如何配置&#xff0c;这里给大家提供一…

沉淀强化镍基合金660大螺丝的物理性能

沉淀强化镍基合金660大螺丝&#xff0c;是一种高性能的工程材料&#xff0c;其在极端环境中展现了优异的稳定性和耐用性。以下&#xff0c;我们将深入解析其主要的物理性能。 首先&#xff0c;该合金螺丝的密度为7.99g/cm&#xff0c;这意味着它具有较高的质量密度&#xff0c;…

力扣随机一题 6/28 数组/矩阵

&#x1f4dd;个人主页&#x1f339;&#xff1a;誓则盟约⏩收录专栏⏪&#xff1a;IT 竞赛&#x1f921;往期回顾&#x1f921;&#xff1a;6/27 每日一题关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d…

GEOS学习笔记(一)

下载编译GEOS 从Download and Build | GEOS (libgeos.org)下载geos-3.10.6.tar.bz2 使用cmake-3.14.0版本配置VS2015编译 按默认配置生成VS工程文件 编译后生成geos.dll&#xff0c;geos_c.dll 后面学习使用C接口进行编程

MySQL中的常用逻辑操作符

逻辑运算符在MySQL查询中扮演着重要角色&#xff0c;通过AND、OR、NOT等运算符的组合使用&#xff0c;可以提高查询的准确性和灵活性&#xff0c;确保查询结果满足业务需求。合理使用这些运算符还能优化查询性能&#xff0c;减少不必要的数据检索&#xff0c;并提高SQL语句的可…

maven 根据不同环境,走不同的实现(多种环境组合)

​ 原因&#xff1a; 线上程序同时支持人大金仓和mysql&#xff0c;且支持根据环境动态选择 java JCE 的实现方式前期已完成 springboot 从mysql 迁移人大金仓 -kingbase &#xff1a;https://blog.csdn.net/qq_26408545/article/details/137777602?spm1001.2014.3001.5502 …

检测SD NAND文件系统异常和修复的方法

目录 1、打开命令提示符&#xff1a; 2、运行chkdsk命令&#xff1a; 3、命令参数说明&#xff1a; chkdsk是Windows中的一个命令行工具&#xff0c;用于检查磁盘上的文件系统错误和修复坏块。MK米客方德为您提供指导&#xff0c;以下是使用chkdsk的步骤&#xff1a; 1、打开…

CAN收发器

1、收发器的主要功能 &#xff08;1&#xff09;CAN通讯&#xff08;即报文收发&#xff09; MCU要CAN通讯&#xff1a;收发器模式切换至正常通讯模式&#xff08;Normal&#xff09;&#xff0c;正常通讯模式收发器能收能发。 MCU不要CAN通讯&#xff1a;把收发器切换至其它…

EHS环境健康安全管理:制造业ESG尖子生的“绿色通行证”

嘿&#xff0c;亲爱的制造业老铁们&#xff01;你们是不是经常听到“EHS环安卫管理”这个词&#xff0c;但又觉得它有些神秘和高大上呢&#xff1f;别担心&#xff0c;今天我就带你们轻松愉快地了解这个让制造业更加绿色、健康、安全的“神器”&#xff01; 一、EHS环安卫管理&…