【爬虫】P1 对目标网站的背景调研(robot.txt,advanced_search,builtwith,whois)

对目标网站的背景调研

  • 检查 robot.txt
  • 估算网站大小
  • 识别网站所用技术
  • 寻找网站的所有者

检查 robot.txt

  • 目的: 大多数的网站都会包含 robot.txt 文件。该文件用于指出使用爬虫爬取网站时有哪些限制。而我们通过读 robot.txt 文件,亦可以最小化爬虫被封禁的可能。
  • 方法: 通过在网站地址后面添加 “/robots.txt”,形成完整的网址,获取该网站对于爬虫的限制信息;
  • 案例:
    例如:我们想要知道 https://www.csdn.net 即 CSDN 官网的爬虫爬取网站的限制,我们可以通过在网址后添加 “/robots.txt”,形成完整网址:https://www.csdn.net/robots.txt,Enter 访问,看到限制信息如下:
    在这里插入图片描述
    在上图中,我们发现主要包含两个属性:Disallow 以及 User-agent
    • 其中,"User-agent: *" 表示以下所有限制 Disallow 适用于所有的网络爬虫。
    • "Disallow: /scripts" 表示不允许任何网络爬虫访问网站上的 /scripts 目录及其下的内容。这意味着爬虫不应该抓取和索引这个目录中的任何内容。

而在访问 baidu 的 robots.txt 文件时,会发现限制不同:

在这里插入图片描述

我们提取出第一段解释一下限制信息:

User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh

这段 robots.txt 文件中的内容针对百度搜索引擎的爬虫(Baiduspider)定义了一系列规则,指示哪些页面或目录不应该被该搜索引擎的爬虫访问和抓取。这些规则的含义如下:

  • User-agent: Baiduspider:这条规则定义了适用于百度搜索引擎爬虫(Baiduspider)的规则。
  • Disallow: /baidu:这表示不允许百度爬虫访问网站上的 /baidu 目录及其下的内容。
  • Disallow: /s?:这表示不允许百度爬虫访问类似于 /s? 这样的路径,通常这种路径会包含查询参数。
  • Disallow: /ulink?Disallow: /link?:这表示不允许百度爬虫访问以 /ulink? 或 /link? 开头的路径,同样是限制查询参数的访问。
  • Disallow: /home/news/data/:这表示不允许百度爬虫访问 /home/news/data/ 目录下的内容。
  • Disallow: /bh:这表示不允许百度爬虫访问 /bh 这个路径。

充分了解如何检查网站爬虫限制后,我们下一步


估算网站大小

  • 目的: 对于目标网站大小的估算,会影响我们判断是否采用串行下载还是分布式下载。对于只有数百个 URL 的网站,效率没有那么重要,只需要串行下载即可,但是对于数百万个网页的网站,则需要我们使用分布式下载;

  • 方法: 而判断采用串行下载还是分布式下载的第一步,则是对网站的大小做好估算。通过访问 Google 高级搜索网站:https://www.google.com/advanced_search

    在这里插入图片描述

    通过 “高级搜索” 搜索关键字段,如上图下图所示,关于 “理财” 字段全网共有 82,200,000 条结果,即 82,200,000 个网页;

    在这里插入图片描述
    所以根据结果,我们对于 “理财” 信息的爬取,必须通过分布式下载,而非串行下载,因为网站页数数量过大。

    但是如果我们任务比较紧急,我们只需要获取 baidu 上所有关于 “理财” 字段的网页信息,我们在上述的高级搜索中添加条件即可:site:www.baidu.com,如下图所示:

    在这里插入图片描述
    如此筛选,我们发现只有 69,000 条结果,而非上千万条,此时,我们所需时间将大大减少。


识别网站所用技术

  • 目的: 网站使用的不同技术,不同框架构建,会对我们如何爬取网站数据有影响。例如,Webpy 框架相对而言比较容易抓取;但是如果改用 AngularJS 构建网站,此时网站内容为动态加载,爬取难度上升;而如果网站使用 ASP.NET 技术,当我们爬取网站时,就必须使用到会话管理和表单提交了。而这些技术与如何爬取的不同方法,将在后续中逐渐阐述出,本节目标为如何得知网址到底使用了什么技术。

  • 方法: builtwith 可以检查网站构建的技术类型;

    pip install builtwith
    
    import builtwith
    builtwith.parse("www.baidu.com")
    

    但是近些年对于爬虫的限制,导致 builtwith.parse() 函数在很多网站不可用,平替的暂时最好方法,是通过网站:https://www.wappalyzer.com/ 进行查看,但是好像需要付费。


寻找网站的所有者

  • 目的: 当然,如何需要找到网站的所有者并与之联系,我们可以通过使用 WHOIS 协议查询域名的注册者是谁。

  • 方法: python 有针对协议的封装库,具体方案为我们首先:

    pip install python-whois
    
    import whois
    print(whois.whois('www.csdn.net'))
    

    结果为:
    在这里插入图片描述

  • domain_name:列出了域名的主要名称和规范名称,这两者在大小写上略有不同,但指向同一个域名。在这里,主要名称是 “CSDN.NET”,规范名称是 “csdn.net”。

  • registrar:这是域名的注册商或注册服务提供商,即负责管理域名注册的公司。在这里,注册商是 “Alibaba Cloud Computing (Beijing) Co., Ltd.”,这是阿里云计算有限公司。

  • whois_server:这是用于查询域名信息的 WHOIS 服务器。在这里,WHOIS 服务器是 “grs-whois.hichina.com”。

  • updated_date:这是域名信息的最近更新日期。在这里,最近更新的日期是 “2023-01-03 02:19:20”。

  • creation_date:这是域名创建的日期。在这里,域名创建的日期是 “1999-03-11 05:00:00”。

  • expiration_date:这是域名的到期日期。在这里,域名到期的日期是 “2024-03-11 04:00:00”。

  • name_servers:这列出了域名使用的名称服务器(DNS 服务器),它们负责将域名解析为 IP 地址。在这里,有两个名称服务器:“VIP3.ALIDNS.COM” 和 “VIP4.ALIDNS.COM”。

  • status:这个字段列出了域名的状态信息,使用了ICANN定义的状态代码。在这里,状态是 “clientTransferProhibited” 和 “clientUpdateProhibited”,表示在域名的传输和更新方面受到限制。

  • emails:列出了用于与域名注册信息相关问题联系的电子邮件地址。在这里,联系邮箱是 “DomainAbuse@service.aliyun.com”,这是阿里云的服务邮箱。

  • dnssec:这是指定域名是否启用了 DNSSEC(域名系统安全扩展)。在这里,域名的 DNSSEC 设置是 “unsigned”,即未启用。

  • state:这个字段提供了域名注册人所在的州或地区。在这里,注册人所在地是 “bei jing”,即北京。

  • country:这个字段提供了注册人所在的国家/地区。在这里,注册人所在国家是 “CN”,即中国。

这些信息提供了关于域名注册和管理的详细信息,包括注册商、注册人所在地、到期日期等等。


上述内容即关于网站的背景调研方法;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

观察者模式实战

场景 假设创建订单后需要发短信、发邮件等其它的操作,放在业务逻辑会使代码非常臃肿,可以使用观察者模式优化代码 代码实现 自定义一个事件 发送邮件 发送短信 最后再创建订单的业务逻辑进行监听,创建订单 假设后面还需要做其它的…

循环内的try-catch 跟循环外的try-catch有什么不一样

起因:一位面试管突然问了这么一道基础的面试题,反而秀了面试者一脸,经常用的却被问到时不知道怎么回答,所以我们平时在写代码的时候,要多注意细节跟原理。也许你不服:不就是先这样,再那样&#…

探讨uniapp的navigator 页面跳转问题

navigator 页面跳转。该组件类似HTML中的<a>组件&#xff0c;但只能跳转本地页面。目标页面必须在pages.json中注册。 "tabBar": {"color": "#7A7E83","selectedColor": "#3cc51f","borderStyle": "bl…

在阿里云服务器上安装Microsoft SharePoint 2016流程

本教程阿里云百科分享如何在阿里云ECS上搭建Microsoft SharePoint 2016。Microsoft SharePoint是Microsoft SharePoint Portal Server的简称。SharePoint Portal Server是一个门户站点&#xff0c;使得企业能够开发出智能的门户站点。 目录 背景信息 步骤一&#xff1a;添加…

TypeScript入门指南

TypeScript学习总结内容目录&#xff1a; TypeScript概述 TypeScript特性。Javascript与TypeScript的区别 * TypeScript安装及其环境搭建TypeScript类型声明 * 单个类型声明&#xff0c;多个类型声明 * 任意类型声明 * 函数类型声明 * unknown类型…

步入React正殿 - State进阶

目录 扩展学习资料 State进阶知识点 状态更新扩展 shouldComponentUpdate PureComponent 为何使用不变数据【保证数据引用不会出错】 单一数据源 /src/App.js /src/components/listItem.jsx 状态提升 /src/components/navbar.jsx /src/components/listPage.jsx src/A…

机器学习:特征工程之特征预处理

目录 特征预处理 1、简述 2、内容 3、归一化 3.1、鲁棒性 3.2、存在的问题 4、标准化 ⭐所属专栏&#xff1a;人工智能 文中提到的代码如有需要可以私信我发给你&#x1f60a; 特征预处理 1、简述 什么是特征预处理&#xff1a;scikit-learn的解释&#xff1a; provide…

07 - 查看、创建、切换和删除分支

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 查看分支2. 创建和切换分支3. 删除分支 1. 查看分支 git branch -va2. 创建和切换分支 第一种&#xff1a; 创建分支&#xff1a; git branch new_branch切换分支&#xff1a; …

辨析:热功率 轴功率

热功率 反应堆热工里提供的裂变反应堆的释放热 堆芯裂变 反应堆能通过高压蒸汽对外输出的总功率值。 反应堆热功率 轴功率 反应堆输出的蒸汽热能&#xff0c;通过机电系统&#xff0c;能转换成推进轴系&#xff0c;加载到推进螺旋桨上的最大实用功率值。 轴功率是输出的机械…

SCF金融公链新加坡启动会 创新驱动未来

新加坡迎来一场引人瞩目的金融科技盛会&#xff0c;SCF金融公链启动会于2023年8月13日盛大举行。这一受瞩目的活动将为金融科技领域注入新的活力&#xff0c;并为广大投资者、合作伙伴以及关注区块链发展的人士提供一个难得的交流平台。 在SCF金融公链启动会上&#xff0c; Wil…

Rust语法:所有权引用生命周期

文章目录 所有权垃圾回收管理内存手动管理内存Rust的所有权所有权转移函数所有权传递 引用与借用可变与不可变引用 生命周期悬垂引用函数生命周期声明结构体的生命周期声明Rust生命周期的自行推断生命周期约束静态生命周期 所有权 垃圾回收管理内存 Python&#xff0c;Java这…

yolov8训练进阶:自定义训练脚本,从配置文件载入训练超参数

yolov8官方教程提供了2种训练方式&#xff0c;一种是通过命令行启动训练&#xff0c;一种是通过写代码启动。 命令行的方式启动方便&#xff0c;通过传入参数可以方便的调整训练参数&#xff0c;但这种方式不方便记录训练参数和调试训练代码。 自行写训练代码的方式更灵活&am…

logstash 原理(含部署)

1、ES原理 原理 使⽤filebeat来上传⽇志数据&#xff0c;logstash进⾏⽇志收集与处理&#xff0c;elasticsearch作为⽇志存储与搜索引擎&#xff0c;最后使⽤kibana展现⽇志的可视化输出。所以不难发现&#xff0c;⽇志解析主要还 是logstash做的事情 从上图中可以看到&#x…

将CNKI知网文献条目导出,并导入到Endnote内

将CNKI知网文献条目导出&#xff0c;并导入到Endnote内 目录 将CNKI知网文献条目导出&#xff0c;并导入到Endnote内一、从知网上导出参考文献二、将知网导出的参考文献导入到Endnote 一、从知网上导出参考文献 从知网上导出参考文献过程和步骤如图1所示。 图1 导出的参考文献…

码银送书第五期《互联网广告系统:架构、算法与智能化》

广告平台的建设和完善是一项长期工程。例如&#xff0c;谷歌早于2003年通过收购Applied Semantics开展Google AdSense 项目&#xff0c;而直到20年后的今天&#xff0c;谷歌展示广告平台仍在持续创新和提升。广告平台是负有营收责任的复杂在线平台&#xff0c;对其进行任何改动…

Memory Allocators 101 - Write a simple memory allocator

Memory Allocators 101 - Write a simple memory allocator - Arjun Sreedharan BlogAboutContactPosts GoogleLinkedInGithubFacebookTwitterUMass Amherst 1:11 AM 9th 八月 20160 notes Memory Allocators 101 - Write a simple memory allocator Code related to this…

Grafana展示k8s中pod的jvm监控面板/actuator/prometheus

场景 为保障java服务正常运行&#xff0c;对服务的jvm进行监控&#xff0c;通过使用actuator组件监控jvm情况&#xff0c;使用prometheus对数据进行采集&#xff0c;并在Grafana展现。 基于k8s场景 prometheus数据收集 配置service的lable&#xff0c;便于prometheus使用labl…

Python Flask+Echarts+sklearn+MySQL(评论情感分析、用户推荐、BI报表)项目分享

Python FlaskEchartssklearnMySQL(评论情感分析、用户推荐、BI报表)项目分享 项目背景&#xff1a; 随着互联网的快速发展和智能手机的普及&#xff0c;人们越来越倾向于在网上查找餐厅、购物中心、酒店和旅游景点等商户的点评和评分信息&#xff0c;以便做出更好的消费决策。…

Android 广播发送流程分析

在上一篇文章中Android 广播阻塞、延迟问题分析方法讲了广播阻塞的分析方法&#xff0c;但是分析完这个问题&#xff0c;自己还是有一些疑问&#xff1a; 广播为啥会阻塞呢&#xff1f;发送给接收器就行了&#xff0c;为啥还要等着接收器处理完才处理下一个&#xff1f;由普通…

【不限于联想Y9000P电脑关盖再打开时黑屏的解决办法】

不限于联想Y9000P电脑关盖再打开时黑屏的解决办法 问题的前言问题的出现问题拟解决 问题的前言 事情发生在昨天&#xff0c;更新了Win11系统后&#xff1a; 最惹人注目的三处地方就是&#xff1a; 1.可以查看时间的秒数了&#xff1b; 2.右键展示的内容变窄了&#xff1b; 3.按…