首页 > 其他分享 >爬虫初识

爬虫初识

时间:2024-03-28 12:22:32浏览次数:33  
标签:请求 网站 爬虫 爬取 初识 解析 数据

爬虫初识

【一】爬虫介绍

【1】定义

  • 爬虫是一种自动化获取互联网数据的技术,通过模拟浏览器行为,向目标网站发送请求并获取响应,然后解析响应中的数据。
  • 应用领域:爬虫可以应用于各种网站数据的获取

【2】工作原理

  • 爬虫通过发送HTTP请求,模拟浏览器行为,获取网站的响应,并解析响应中的数据。

【3】分类

  1. 通用爬虫 vs. 专用爬虫
    • 通用爬虫:用于抓取互联网上的大量网页,如搜索引擎爬虫(例如Googlebot、Bingbot等)。
    • 专用爬虫:针对特定的网站、领域或任务设计,如价格比较爬虫、新闻聚合爬虫等。
  2. 按照工作方式分类
    • 单线程爬虫:一次只能处理一个请求的爬虫。
    • 多线程/并发爬虫:可以同时处理多个请求,提高爬取效率。
    • 异步爬虫:利用异步编程技术,在发送请求时不会阻塞程序的执行,可以更高效地处理大量的请求。
  3. 按照爬取深度分类
    • 表面爬虫:只爬取网页上的静态内容,不会深入到网页内部的链接。
    • 深度爬虫:会跟踪网页内部的链接,继续爬取链接指向的页面,形成一个更深的爬取结构。
  4. 按照目标网站类型分类
    • 静态网站爬虫:用于爬取静态网页的内容。
    • 动态网站爬虫:能够处理JavaScript等动态内容,爬取动态网页的内容。
  5. 基于数据获取方式分类
    • 基于API的爬虫:通过调用网站提供的API接口获取数据。
    • 基于页面解析的爬虫:直接解析网页内容获取数据。

【4】Python爬虫的常用库

  • requests库

    • 用于发送HTTP请求,方便地发送GET、POST等请求,并获取响应。
    • 应用领域:爬虫可以使用requests库来发送请求和获取响应。
  • BeautifulSoup库

    • 用于解析HTML和XML文档,方便地提取其中的数据。

    • 应用领域:爬虫可以使用BeautifulSoup库来解析网页并提取需要的数据。

  • Selenium库

    • 用于模拟浏览器行为,模拟用户在浏览器中的操作,如点击、输入等。
    • 应用领域:爬虫可以使用Selenium库来模拟用户行为,获取需要的数据。
  • Scrapy框架

    • 提供了一套完整的爬虫开发流程,包括发送请求、获取响应、解析响应、存储数据等步骤。

    • 应用领域:爬虫可以使用Scrapy框架进行爬虫开发。

【5】爬虫的注意事项

  • 爬虫的合法性

    • 在进行爬虫开发时,需要遵守相关的法律法规,如《计算机软件保护条例》、《互联网信息服务管理办法》等。
  • 爬虫的速度

    • 需要注意爬虫的速度,避免对目标网站造成过大的负担。
  • 爬虫的稳定性

    • 需要注意爬虫的稳定性,避免因为网络波动等原因导致爬虫中断。
  • 爬虫的数据存储

    • 需要注意数据的存储方式,避免因为数据量过大导致存储不足。

【6】爬虫的基本流程

  1. 确定爬取目标
    • 确定要爬取的网站或者网页。
    • 确定要提取的信息类型,例如文本、图片、链接等。
  2. 发送HTTP请求
    • 向目标网站发送HTTP请求,请求页面的内容。
    • 可能需要设置请求头,包括用户代理信息等,以模拟正常浏览器行为。
  3. 获取网页内容
    • 接收网站返回的响应,获取页面的HTML代码或其他标记语言。
    • 可能需要处理响应,例如处理重定向、处理HTTP错误等。
  4. 解析网页内容
    • 使用解析库(如Beautiful Soup、lxml等)解析HTML或其他标记语言,提取出所需信息。
    • 根据需要,可能需要使用正则表达式或XPath来定位和提取特定的内容。
  5. 处理数据
    • 对提取的数据进行清洗、转换、去重等处理,以确保数据的质量和一致性。
    • 可能需要将数据存储到数据库、文件或者其他数据存储介质中。
  6. 存储数据
    • 将处理后的数据存储到指定的存储介质中,如数据库、文件系统等。
    • 根据需求,可能需要定期更新已存储的数据。
  7. 处理链接
    • 如果需要爬取更多页面,解析当前页面中的链接,将新的链接加入爬取队列。
    • 保持跟踪已经爬取的页面,避免重复爬取或者进入死循环。
  8. 控制爬取速度
    • 为了避免对目标网站造成过大的负担或者被封禁,需要控制爬取速度,避免过快地发送请求。
    • 可以使用延时等手段来控制爬取速度。
  9. 处理异常情况
    • 处理网络请求超时、页面解析错误等异常情况,确保爬虫的稳定性和健壮性。
    • 可以记录日志、发送警报等方式来监控和处理异常情况。

【7】常见的反爬虫措施

  • 频率限制

    • 网站会针对某个IP地址或用户账号设置请求频率限制,如单位时间内只允许发送一定数量的请求。

    • 一旦超出限制,网站会对该IP或账号进行处罚,如暂时封禁或限制访问。

  • 封IP和封账号

    • 网站可以通过监测异常行为,如频繁请求、高并发等来判断是否有恶意爬取行为,并对相关IP地址或账号进行封禁。

    • 为了规避封禁,爬虫可以使用代理池来随机切换IP地址,或使用大量小号(账号池)轮流发送请求。

  • 请求头中带加密信息

    • 网站可能要求请求头中包含特定的加密信息,如Referer(来源页面地址)和User-Agent(浏览器标识),用于验证请求的合法性。

    • 爬虫需要模拟真实浏览器的请求头信息,以避免被检测为非法爬虫。

  • 响应回来的数据是加密

    • 为了防止直接获取数据,网站可能会对返回的数据进行加密或编码,爬虫需要解密或解码才能获取到有效信息。

    • 这种情况下,爬虫可能需要分析加密算法或从其他渠道获取解密密钥。

  • 验证码反扒

    • 网站为了防止机器自动注册、恶意爬取等行为,可能会在关键操作前设置验证码。

    • 爬虫需要通过第三方平台或自己破解验证码来进行自动化操作。

  • JS加密

    • 网站可能使用JavaScript对核心代码进行了压缩和混淆,以ers() -> function()的形式, ers.somethin() -> function somethin() ,并添加了一些晦涩的加密方法。

    • 爬虫需要逆向工程来还原和理解这些加密算法,并编写相应的代码进行解密。

  • 手机设备唯一ID号

    • 网站可能会根据爬虫请求的设备唯一标识符(例如IMEI、Android ID、iOS设备ID等)进行识别和限制。

    • 爬虫可能需要模拟不同设备的请求,或者通过修改设备信息达到绕过检测的效果。

需要注意的是,对于某些网站,爬虫绕过这些反爬虫措施可能涉及到违法行为,建议在合法范围内开展爬虫活动,遵守相关法律法规和网站的使用规定。

标签:请求,网站,爬虫,爬取,初识,解析,数据
From: https://www.cnblogs.com/Lea4ning/p/18101323

相关文章

  • Selenium绕过爬虫检测(终极方案)
    众所周知,Selenium是一个用于自动化Web应用程序测试的工具,通过控制浏览器执行这些脚本来模拟用户的操作。但是,太容易被检测!通过Selenium启动的浏览器,有很多的特征能够被检测出来,进而触发验证码、滑块等。网上有很多的防检测方法,大都是掩耳盗铃,对于一些网站来说没什么效果。只要......
  • OpenCV初识
    1、OpenCV简介OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库。它由一系列的C函数和少量C++类构成,同时提供Python、Java和MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。#导入OpenCV库importcv2#打印OpenCV......
  • flutter--day1 初识
    flutter&dart初体验前言:我平时只使用VUE和uniapp,最近的一个项目是一个pad上的app,于是了解了下移动端。现在比较流行的两个框架flutter和reactnative,刚好项目进入尾声,就来研究一下flutter吧!地址dart中文网:https://dart.cn/guidesflutter中文网:https://flutter.cn/docs......
  • 最详细爬虫零基础教程11——html格式提取之xpath
    文章目录一、html和xml二、xpath获取节点属性三、xpath语法四、案例展示总结一、html和xmllxml是一款高性能的PythonHTML/XML解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息。区别:1.xml被设计为传输和存储数据,其焦点是数据的内容2.html是显示......
  • 最详细爬虫零基础教程10——json格式提取之jsonpath
    文章目录一、json数据解析二、案例演示1.解析获得数据2.简化代码3.豆瓣json数据解析总结一、json数据解析用来解析多层嵌套的json数据;JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript,Python,PHP和Java。语......
  • 就业班 第二阶段 2401--3.26 day6 Shell初识 连接vscode
    远程连接vs_code可能出现的问题C:\Users\41703\.ssh验证远程主机的身份,如果连不上vscode,可以尝试删除这里面的公钥代码。重新安装那个扩展,排除扩展本身的问题谁连过我,并操作了什么curlhttps://gitea.beyourself.org.cn/newrain001/shell-project/raw/branch/master......
  • 爬虫(m3u8格式视频文件)
    点击查看代码importreimportrequestsfromlxmlimportetreeimportasyncioimportaiohttpimportaiofilesimportosfromCrypto.CipherimportAES#获取第一层m3u8文件的url并下载deffirst_m3u8_url(url):resp=requests.get(url,verify=False)html......
  • python爬虫小案例-re正则
    案例如下:1.使用正则表达式和文件操作爬取并保存“某吧”某帖子全部内容(该帖不少于5页。本次选取的是某吧中的NBA吧中的一篇帖子,帖子标题是“克莱和哈登,谁历史地位更高”。爬取的目标是帖子里面的回复内容。源程序如下:importcsvimportrequestsimportreimporttime......
  • 使用 Kotlin DSL 编写网络爬虫
    本博文将会通过一个网络爬虫的例子,向你介绍Kotlin的基本用法和其简洁有力的DSL。关于DSL按照维基百科的说法,DSL(domain-specificlanguage)是一种专注于某一特定应用领域的计算机语言。和我们常用的通用目的型语言(类如C,Java,Python等)相反,DSL并不承诺可用来解决一切可计算......
  • 鸿蒙操作系统-初识
    HarmonyOS-初识简述安装配置helloworld1.创建项目2.目录解释3.构建页面4.真机运行应用程序包共享包HARHSP快速修复包官方文档请参考:HarmonyOS简述1.定义:HarmonyOS是分布式操作系统,它旨在为不同类型的智能设备提供统一的操作系统,可以在手机、平板、智能穿戴、智......