【爬蟲】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”,即中國。

這些信息提供了關于域名注冊和管理的詳細信息,包括注冊商、注冊人所在地、到期日期等等。


上述內容即關于網站的背景調研方法;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42830.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42830.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42830.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue中實現文字檢索時候將搜索內容標紅

實現結果 html&#xff1a; <div class"searchBox"><span class"bt">標&#8195&#8195題</span><div class"search"><div class"shuru"><!-- <span class"title">生產經營<…

[leetcode] 707 設計鏈表

707. 設L計鏈表 中等 902 相關企業 你可以選擇使用單鏈表或者雙鏈表&#xff0c;設計并實現自己的鏈表。 單鏈表中的節點應該具備兩個屬性&#xff1a;val 和 next 。val 是當前節點的值&#xff0c;next 是指向下一個節點的指針/引用。 如果是雙向鏈表&#xff0c;則還需…

如何批量修改圖片名為不同名稱

如何批量修改圖片名為不同名稱&#xff1f;當今社會&#xff0c;因為人們都養成了隨手拍照的習慣&#xff0c;所以擁有上千上萬張照片的相冊已經司空見慣不足為奇。然而&#xff0c;我們在保存這些照片時往往都會碰到一個大難題——電腦中的圖片名稱千奇百怪&#xff0c;讓整個…

C++并發多線程--std::async、std::packaged_task和std::promise的使用

目錄 1--std::async的使用 2--std::packaged_task的使用 3--std::promise的使用 1--std::async的使用 std::async用于啟動一個異步任務&#xff0c;并返回一個std::future對象&#xff1b;std::future對象里含有異步任務線程入口函數的結果&#xff1b; std::launch::deferr…

完美解決微信小程序使用復選框van-checkbox無法選中

由于小程序使用了vant-ui框架&#xff0c;導致checkbox點擊無法選中問題 <van-checkbox value"{{ checked }}" shape"square"><view class"check-content"><view class"checktext">我已閱讀并同意>《用戶協議》…

opencv-目標追蹤

import argparse import time import cv2 import numpy as np# 配置參數 ap argparse.ArgumentParser() ap.add_argument("-v", "--video", typestr,help"path to input video file") ap.add_argument("-t", "--tracker", …

第1天----驗證一個字符串是否是另一個字符串的子串

本文我們將學習如何去驗證一個字符串是否是另一個字符串的子串。 一、小試牛刀&#xff1a; 題目描述 輸入兩個字符串&#xff0c;驗證其中一個串是否為另一個串的子串。 輸入格式 兩行&#xff0c;每行一個字符串。 輸出格式 若第一個串 s 1 是第二個串 s 2 的子串&#xff0c…

java Spring Boot properties多環境配置拆分文件管理

上文 java Spring Boot yml多環境拆分文件管理優化 我們用yml 做了一個多環境配置文件的拆分管理 我們將 application.yml 改為 application.properties 參考代碼如下 spring.profiles.activedev我們知道 yml 是用 : 來區分高低基本 而 properties是直接通過 . 來表達 其他基本…

使用svd 分解的方法對神經網絡模型進行壓縮(能不能壓縮要看秩的大小)

參考和理論 壓縮原理代碼 import torch import numpy as np torch.manual_seed(0)# ------------------------------------ # n:輸入數據維度 # m:輸出數據維度 # ------------------------------------ n = 12 m = 10# ------------------------------------ # 隨機初始化權…

樹形組件淺知

別人寫好的輪子&#xff0c;會用即可 首先&#xff0c;需要安裝依賴&#xff0c;npm install --save riophae/vue-treeselect 如果使用npm 不行 那么就使用 yarn add --save riophae/vue-treeselect 然后在使用的地方引入即可 // import the componentimport Treeselect from…

微信ipad協議8.0.40 加好友功能

友情鏈接 geweapi.com 點擊即可訪問&#xff01; 好友請求驗證 小提示&#xff1a; v_3 v_4 可以參考 搜索接口 請求URL&#xff1a; http://域名地址/api/contacts/verifyuser 請求方式&#xff1a; POST 請求頭&#xff1a; Content-Type&#xff1a;application/js…

SpringCloud實用篇7——深入elasticsearch

目錄 1 數據聚合1.1 聚合的種類1.2 DSL實現聚合1.2.1 Bucket聚合語法1.2.2 聚合結果排序1.2.3 限定聚合范圍1.2.4 Metric聚合語法1.2.5.小結 1.3 RestAPI實現聚合1.3.1 API語法1.3.2 業務需求1.3.3 業務實現 2 自動補全2.1 拼音分詞器2.2 自定義分詞器2.3 自動補全查詢2.4 實現…

POJ 1995 Raising Modulo Numbers 快速冪

一、總結 我一開始擔心溢出&#xff0c;開了一個無符號的long long&#xff0c;但是直接超時&#xff0c;后來一看它的mod不是很大&#xff0c;于是改成int&#xff0c;直接過了。 二、代碼 #include <iostream> using namespace std; int H, Z; int M; int mulMod(in…

P1217 [USACO1.5] 回文質數 Prime Palindromes

P1217 [USACO1.5] 回文質數 Prime Palindromes - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) # [USACO1.5] 回文質數 Prime Palindromes ## 題目描述 因為 $151$ 既是一個質數又是一個回文數&#xff08;從左到右和從右到左是看一樣的&#xff09;&#xff0c;所以 $151$ …

Python基礎教程:私有變量的訪問和賦值教程

嗨嘍~大家好呀&#xff0c;這里是魔王吶 ? ~! 首先我們這里先描述下&#xff1a; Python中&#xff0c;變量名類似__x__的&#xff0c;以雙下劃線開頭&#xff0c;并且以雙下劃線結尾的&#xff0c;是特殊變量&#xff0c;特殊變量是可以直接訪問的&#xff08;比如 doc, __i…

SpringBoot3集成ElasticSearch

標簽&#xff1a;ElasticSearch8.Kibana8&#xff1b; 一、簡介 Elasticsearch是一個分布式、RESTful風格的搜索和數據分析引擎&#xff0c;適用于各種數據類型&#xff0c;數字、文本、地理位置、結構化數據、非結構化數據&#xff1b; 在實際的工作中&#xff0c;歷經過Ela…

南大通用數據庫(gbase 8s) 在Centos7環境 集群安裝

國產數據庫-達夢 一、環境詳情二、Centos7 參數優化&#xff08;所有節點&#xff09;三、創建gbase用戶&#xff08;所有節點&#xff09;四、 安裝部署&#xff0c;只在node1 安裝即可同步五、數據庫卸載六、數據庫連接與使用 當前安裝 在指定版本環境下 測試&#xff0c;僅供…

QT的設計器介紹

設計器介紹 Qt制作 UI 界面&#xff0c;一般可以通過UI制作工具QtDesigner和純代碼編寫兩種方式來實現。純代碼實現暫時在這里不闡述了在后續布局章節詳細說明&#xff0c;QtDesigner已經繼承到開發環境中&#xff0c;在工程中直接雙擊ui文件就可以直接在QtDesigner設計器中打…

【100天精通python】Day39:GUI界面編程_PyQt 從入門到實戰(下)_圖形繪制和動畫效果,數據可視化,刷新交互

目錄 專欄導讀 6 圖形繪制與動畫效果 6.1 繪制基本圖形、文本和圖片 6.2 實現動畫效果和過渡效果 7 數據可視化 7.1 使用 Matplotlib繪制圖表 7.2 使用PyQtGraph繪制圖表 7.3 數據的實時刷新和交互操作 7.3.1 數據的實時刷新 7.3.2 交互操作 7.4 自定義數據可視化…