日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【复】从0到1的 selenium 爬虫经历

發布時間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【复】从0到1的 selenium 爬虫经历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 簡介與安裝
    • 定義
    • 安裝 selenium 庫
    • 安裝瀏覽器驅動程序
    • 測試
  • Selenium IDE
  • 實戰演練
    • 例一:下載圖片
    • 例二:注冊登錄
  • 代理
    • 透明代理
    • 匿名代理
    • 高級匿名代理
  • 后記

前言

備戰春招難免會無趣和煎熬,因此,突然發現了爬蟲這么樂趣的事情,一番探究之后,發現這是多么美妙的事情啊~

自動化腳本 yyds~

言歸正傳,

之前使用過爬蟲,不過用的是 Java 的,當時做一個電商項目,用 Jsoup 快速的爬取某東的商品數據存到 es 中,后來迎接雙11,某東在中間加了個驗證重定向,這就導致 Jsoup 基本失效,因而認識了 HtmlUnit,實現了模擬操作瀏覽器,成功地獲取到了數據;

之后就是用 Jsoup 和 HtmlUnit 結合寫了幾個自動化腳本,香香的~,就是掛服務器上,要占用的運行內存不小;

所以轉到了 py 的 request,啊,這是真的香,不僅運行方便,內存占用也就五分之一左右,用了 request 怎么能不用 selenium 呢,下面為您揭曉 selenium 的妙用;
?

簡介與安裝

定義

Selenium 是一個用于 Web 應用程序測試的工具。Selenium 測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge 等。

這個工具的主要功能包括:

  • 測試與瀏覽器的兼容性——測試應用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。
  • 測試系統功能——創建回歸測試檢驗軟件功能和用戶需求。
  • 支持自動錄制動作和自動生成 .Net、Java、Perl 等不同語言的測試腳本。

Selenium 測試直接在瀏覽器中運行,就像真實用戶所做的一樣。Selenium測試可以在 Windows、Linux 和 Macintosh 上的 Internet Explorer、Chrome 和 Firefox 中運行。

?

安裝 selenium 庫

首先我們要清楚,為什么要使用 selenium?

為了防止網絡爬蟲,加大網絡爬蟲的難度,很多網站將接口地址做了處理,它們更多的具有這些特點:既冗長又復雜,經過加密,具有時效性,毫無規律可言。

selenium 可以使用模擬瀏覽器運行的方式,它可以做到在瀏覽器中看到的是什么樣,抓取的源碼就是什么樣,即可見即可爬。再也不用管網頁內容是使用了JavaScrapt還是Ajax, 也不用管接口有多復雜了(其實連接口是什么都不用管)。

這里用的編程語言是 Python,因此,只要安裝 py 中的 selenium 庫就好了,

pip install selenium

?

安裝瀏覽器驅動程序

運行 selenium 打開瀏覽器是需要下載安裝瀏覽器驅動程序的,火狐中有集成好的插件,直接搜索安裝即可,下面是以 Google Chrome 為例;

  • 查看當前 Google Chrome 瀏覽器的版本;
  • 下載對應版本的驅動程序;
    官方下載地址:https://chromedriver.storage.googleapis.com/index.html
    淘寶鏡像地址:http://npm.taobao.org/mirrors/chromedriver/

    我的 Google Chrome 的版本號是 96.0.4664.110,但是這里并沒有相對應的版本號,我把略高和略低版本的驅動程序都嘗試了一下,發現略低的是可以的,即下載 96.0.4664.45;
    ?
    下載完之后,放在本地的 py 根目錄下,
  • ?

    測試

    運行下述代碼,測試一下之前的安裝是否成功,

    from selenium import webdriver driver = webdriver.Chrome() driver.get("https://blog.csdn.net/weixin_46263782")


    ?

    Selenium IDE

    Selenium IDE 是一個火狐插件(現在谷歌也有),可以幫助剛入門的自動化測試供測試,在腳本語言不太熟練的情況下,可以通過Selenium IDE實現腳本的錄制、開發、回放。

    這個東西對萌新真的太友好了,只要自己操作錄制一遍,基本能百分百還原,而且還能夠導出成編程語言,稍作修改就能使用,真的是很方便,強推!

    這里以谷歌為例,點進設置,選擇擴展程序,搜索一下 Selenium IDE,我這已經是安裝好了,

    使用的時候點擊右上角,

    會彈出如下界面:

    第一次的話就選擇新建一個項目,然后跟著步驟走就好了;

    這是我自己之前寫的一個自動化腳本,先是通過錄制,然后自己根據實際情況稍作修改,至于干什么的,懂得都懂;

    只能說這東西真的太香了;
    ?

    實戰演練

    既然學了理論,自然要進行實踐來鞏固和加深印象了,畢竟實踐是檢驗真理性的唯一標準嘛,
    ?

    例一:下載圖片

    最近喜歡關注國家大事,然后就發現這 60秒讀懂世界 就很不錯,先是看了看公眾號,不過沒有搞到鏈接,在網上搜了一下,發現有一家應該是爬了那個公眾號,然后我就借機爬了那個網站,嘿嘿,在通過 bot 每天定時發給自己,美滋滋😃

    不過我是用 requests 完成的,先上源碼,然后再上轉換成 selenium 之后的代碼;

    import requests import urllib.request from pyquery import PyQuery as pqurl = 'https://www.rjdq8.com/?c=index&m=infos&last_cate_id=7' doc = pq(requests.get(url, headers = headers).text) next_url = str(doc('.news-top-detail').find('a').attr('href')) next_doc = pq(requests.get(next_url, headers = headers).text) png_url = 'https://www.rjdq8.com/' + str(next_doc('.all-detail-item-content').find('img').attr('src')) request = urllib.request.Request(png_url, headers = headers) response = urllib.request.urlopen(request) fp = open("day_60s.png", "wb") fp.write(response.read()) fp.close()

    大致示意一下就是下面這樣:

    import time from selenium import webdriver from selenium.webdriver.common.by import Byurl = 'https://www.rjdq8.com/?c=index&m=infos&last_cate_id=7' driver = webdriver.Chrome() driver.get(url) next_url = driver.find_element(By.CLASS_NAME, 'news-top-detail').find_element(By.TAG_NAME, 'a').get_attribute('href') time.sleep(2) driver.get(next_url) png_url = driver.find_element(By.CLASS_NAME, 'all-detail-item-content').find_element(By.TAG_NAME, 'img').get_attribute('src') driver.quit()

    ?

    例二:注冊登錄

    一般用到 selenium 的都會有登錄注冊這種要填充文本框的環節,最優的選擇當然是直接塞 cookie,那真要注冊登錄了該怎么辦呢;

    一般注冊登錄的文本框就是 input,然后還有一個按鈕,基本都是這樣,那代碼就如下:

    driver.get(url) time.sleep(1)# 登錄 driver.find_element(By.NAME, 'UserText').send_keys(userId) time.sleep(0.2) driver.find_element(By.NAME, 'PasswordText').send_keys(password) time.sleep(0.2) driver.find_element(By.CLASS_NAME, 'btn-login').click() time.sleep(1)

    ?

    代理

    想必用到 selenium 的讀者都應該多少聽過或者用過代理了,那這里為什么要特意提及代理呢,因為有些讀者可能只知道要用代理,但卻不明白代理也是分等級的,下面來一一介紹:

    代理主要分為三種:透明代理,匿名代理,高級匿名代理;
    ?

    透明代理

    什么是透明代理?

    透明代理是另一種類型的 HTTP 代理,它們不會修改通過它們發送的請求。您的 IP 地址和其他可能鏈接到您和您設備的信息將發送到該網站。

    它們允許請求通過它們,或者在某些條件不滿足時拒絕訪問。由于它們不會修改您的請求并且不會通知您它們的存在,因此您無法分辨它們是否存在,除非您進行了測試。

    但是,然而,它們既可能對你有益,也可能成為你擔憂的來源,并最終決定你的上網體驗。
    ?

    透明代理是如何工作的?

    透明代理與任何其他類型的代理一樣:它們是中介,發送到 Web 服務器的請求在到達預期的 Web 服務器之前會通過它們。將它們策略性地放置在中間,并通過它們路由請求。與需要配置匿名代理才能工作的匿名代理不同,透明代理從頭開始就不需要進行配置,這就是為什么大多數人不了解它們的原因。

    REMOTE_ADDR = 代理 IP 地址 HTTP_VIA = 代理 IP 地址 HTTP_X_FORWARDED_FOR = 您的 IP 地址

    因此,當您使用透明代理時,網站所有者知道您使用的是 HTTP_VIA 代理,同時也知道您的真實 IP!

    通過透明代理發送請求時,請求將會被攔截,并修改 REMOTE_ADDR 標頭,并用代理服務器的 IP 地址填充,告知網站該請求已通過。HTTP_X_FORWARDED_FOR 標頭將攜帶您的 IP 地址,并且啟用了 HTTP_VIA,使網站知道請求來自您,并通過代理服務器傳遞。

    它們通常由 Internet 服務提供商和您使用其 WiFi 的組織進行配置。代理可以訪問您的請求數據,并且可以出于惡意目的對其進行修改。它成為一種稱為 “中間人攻擊” 的網絡攻擊。然而,在大多數情況下,沒有惡意活動被執行,您將被審查和內容過濾,其中一些甚至是有用的。
    ?

    透明代理用例

    • 審查與過濾:
      透明代理的最普遍應用是在審查領域。互聯網上的審查制度是真實的,您可能一直處于監控之下,甚至不知道。當發現違反規則時,您才知道自己正在受到監視。
      ?
      政府和企業,甚至學校,都使用透明代理來限制對 Internet 上某些網站的訪問。你若沒有訪問受限制的網站,你不會知道。但是,如果您嘗試訪問任何受限制的網站,則會顯示一條錯誤消息。
      ?
    • 認證網關:
      您是否遇到過使用公共 Wi-Fi 時,將您重定向到要求您提供身份驗證詳細信息的頁面,然后才能繼續?那是一個透明代理,它可以攔截您的請求,并確保您有權使用該代理,然后您的請求才能通過。
      ?
    • 網絡緩存:
      代理在 Web 緩存領域很有用。您的 Internet 服務提供商(ISP)或辦公室可以使用代理來減少帶寬使用,并減少等待 Web 請求響應所花費的時間。
      ?
      首次發出請求時,代理將獲取數據并保存本地副本。當您或同一網絡中的任何其他人嘗試訪問相同的資源時,它沒有獲取新的請求到網站,而是僅獲取保存的副本。一種微觀上的內容交付網絡(CDN)。

    ?

    匿名代理

    什么是匿名代理?

    匿名代理是 Internet 用戶中最流行的代理類型。它們是不透明的,可以通過更改您的 IP 地址來更改請求數據。這使得您訪問的網站很難知道您是發起請求的網站。

    將 IP 地址更改為一個全新的 IP 地址,這就是使它匿名的原因。但是,他們將自己標識為代理。這是通過修改 REMOTE_ADDR,HTTP_X_FORWARDED_FOR 和 HTTP_VIA 來完成的。

    REMOTE_ADDR = 代理 IP 地址 HTTP_VIA = 代理 IP 地址 HTTP_X_FORWARDED_FOR = 代理 IP 地址

    因此,當您使用匿名代理時,網站所有者知道您使用的是 HTTP_VIA 代理,但無法知道您的真實 IP。
    ?

    匿名代理如何工作的?

    如果不配置代理,發送的 Web 請求將直接發送到預期的 Web 服務器。匿名代理要求您對其進行配置,然后才能使用它們,盡管您的辦公室可以決定根據您的行為對其進行配置。

    如果您打算在非瀏覽器環境(例如 SEO 工具或某種類型的 bot)中使用它們,則必須學習如何在此類工具上進行配置。

    配置后,您的 Web 請求所遵循的路由將發生變化。代理服務器將位于您的計算機瀏覽器和 Internet 之間。當您發出 Web 請求時,您將被重定向到代理服務器,而不是直接進入要訪問的站點的請求。到達代理服務器后,您的請求標頭將被修改,正是這種修改使它成為匿名的。

    HTTP 代理修改 HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR 標頭,剝離您的 IP 地址,并用其自己的 IP 地址填充它。此后,請求將發送到網站,因為發送了 HTTP_VIA 標頭,所以網站將知道已使用代理,但不會看到您的 IP 地址。發送響應后,它不會直接發送給您,而是發送給代理服務器,然后代理服務器將請求轉發回給您。

    但是,您需要知道,盡管您對使用代理訪問的網站是匿名的,但對于您使用的代理卻永遠都不是匿名的。雖然許多網站聲稱不會跟蹤用戶的瀏覽活動,并嚴格執行無日志策略,但有些網站會在必要時給你發郵件,對,有些網站實際上會保留日志,即使他們告訴您不會這樣做。這就是為什么您應該使用高級代理服務器,這些代理服務器位于不強迫其業務披露其客戶信息的區域。
    ?

    匿名代理用例

    匿名代理具有廣泛的應用。如果您是一個經常使用 Internet 的用戶,您可能真的不需要它們,但是如果您想保持匿名,或者您正在進行 web 自動化,沒有代理,那么您就幾乎無能為力了。

    以下是匿名代理的主要用途:

    • 逃避審查并訪問本地和受限制的 Web 資源:
      在瀏覽器上忘記隱身模式;如果您訪問的網站可以訪問您的 IP 地址,那您就是不匿名的。通過您的 IP 地址,他們可以檢測到您的位置(雖然不是絕對的)。安全機構可以使用您的 IP 地址以及其他信息來跟蹤您。
      ?
      有了您的 IP 地址,您的政府或辦公室就可以在線監控您的活動。網站可以使用您的 IP 地址來拒絕您訪問其他地方的本地內容。因為代理可以隱藏您的 IP 地址,它可以幫助您規避所有這些。

    • 網頁爬取和抓取:
      大多數網站都有操作限制。舉例來說,如果您持續在一分鐘內向 Google 搜索發送許多請求,那么您將需要解決驗證碼,這是您已經超過了人為限制的跡象,他們懷疑您正在使用機器人。
      ?
      為了避免在使用機器人抓取和爬網時解決驗證碼問題,互聯網營銷人員使用了匿名代理,匿名代理可以是高旋轉代理,例如 SEO,也可以是粘性代理(需要維護會話時),例如社交媒體自動化。

    • 品牌保護:
      不知名的人或公司在網上做什么,不會引起別人的注意。如果您以知名公司的身份進行嘗試,它可能會引起很多關注,這可能會損害您的品牌形象。但是,有些活動雖不符合道德規范,但您的品牌需要它們保持活力。
      ?
      在這種情況下您會怎么做?眼睜睜看著你的品牌衰落,因為你不想損害它的形象?不,您應該使用代理和其他技術,以確保自己的某些在線活動不會被發現。

    • 廣告驗證:
      在線廣告行業是一種除非您知道自己在做什么,否則就無法避免被騙的網站。這與您是廣告發布商還是合作伙伴無關。一些營銷人員可以從他們不展示的廣告中獲得收入。
      ?
      他們利用了一些技巧,這些技巧會在您訪問時向您展示廣告,但向他們的客戶展示需求,您可以使用代理人來偽裝成普通用戶。另一方面,您可以使用代理來驗證您不存在的位置的廣告。
      ?
      例如,Google AdSense 根據位置,瀏覽歷史記錄和其他數據顯示不同的廣告。使用代理,您可以更改位置并訪問其他位置的數據。
      ?
      除此以外,它們還用于倒賣運動鞋和倒票 …
      ?

    高級匿名代理

    什么是高級匿名代理?

    高匿名代理是一種 HTTP 代理,它是匿名的,可以將安全性和隱私性提高到一個全新的水平。與在匿名代理中將您的 IP 地址隱藏但將自己標識為代理的情況不同,高級匿名代理不會將自己標識為代理,而是將您的 IP 地址隱藏并提供給客戶端。

    當您僅可以使用匿名代理時,您可能會問為什么要使用高級匿名代理。事實是,許多網站默認情況下會阻止匿名代理。通過使用高匿名代理,您可以逃避代理檢查。當您獲得訪問請求資源的權限時,其中的關鍵是 HTTP 標頭。
    ?

    高級匿名代理如何工作的?

    高級匿名代理的工作原理與所有匿名代理相同,它們充當您的 Web 請求通過其發送的中介服務器。當請求到達它時,您的請求將被修改,剝離您的 IP 地址并用一個完全不同的 IP 地址替換它,這樣您請求內容的 Web 服務器將不會知道您在請求的背后。

    但是,與將自己標識為代理的匿名代理不同,高匿名代理不會將自己標識為代理,代理如何識別和不識別 Web 服務器的自身?有3個 HTTP 標頭供代理服務器使用,以便網站知道發送給它們的請求是否通過代理服務器路由。這3個標頭包括 HTTP_VIA,HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR。

    REMOTE_ADDR = 代理 IP 地址 HTTP_VIA = 未確定(空白) HTTP_X_FORWARDED_FOR = 未確定(空白)

    因此,當您使用高級匿名代理(也稱為精英代理)時,網站所有者無法檢測到您在使用高匿名代理。

    當 Web 服務器接收到請求時,它將查看這3個標頭的內容以了解如何響應該請求,其中包含 IP 地址,這些 IP 地址充當 Internet 上的計算機標識符并用于位置標識。對于高級匿名代理,HTTP_VIA 和 HTTP_X_FORWARDED_FOR 中不包含任何信息。HTTP_VIA 旨在使網站知道請求已通過代理進行路由,而 HTTP_X_FORWARDED_FOR 則用于首先發起請求的 IP 地址。

    由于這兩個為空白,因此服務器無法知道請求已通過代理路由。為此,將修改 REMOTE_ADDR 并指定其他 IP 地址。這使您更加安全,并隱藏了您的在線身份(IP地址),您將被視為普通用戶。
    ?

    高級匿名代理用例

    高匿名代理可用于您可使用匿名代理進行的所有操作。

    它們的應用領域很多。常規的 Internet 用戶使用它們來逃避審查并訪問 Internet 上受限制的內容和本地內容,而 Internet 營銷人員和研究人員將它們用于其他用途。

    組織將它們用于品牌保護。在 SEO 以及 web 抓取和爬蟲中已廣泛使用。

    • 電子郵件抓取工具:Web 電子郵件抓取服務和軟件(電子郵件提取器)
      自動化專家還將它們用于運動鞋搶購,票務清算和社交媒體自動化中。它們還用于“廣告”中的廣告驗證。

    • 最好的 Craigslist 代理分類廣告發布;

    ?

    后記

    代理這東西還是很有必要的,其實可以在 http://httpbin.org/ip 這個網站測試一下的,透明代理的話就會把你自己的 ip 以及代理 ip 顯示在上面了;

    極光會有的,并肩于雪山之巔!

    總結

    以上是生活随笔為你收集整理的【复】从0到1的 selenium 爬虫经历的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。