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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

爬虫前奏

發布時間:2023/12/10 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫前奏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲前奏

什么是爬蟲

“網絡爬蟲,又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者,是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本,另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲?!?/p>

爬蟲應用場景

  • 搜索引擎公司(谷歌:全球最大的爬蟲,百度:國內最大的爬蟲);
  • 輿情分析與數據挖掘;
  • 惠惠購物助手;
  • 數據分析;
  • 搶票軟件等。

為什么用Python寫爬蟲

  • PHP:PHP是世界上最好的語言,但他天生不是做爬蟲的料,而且對多線程、異步支持也并不是很理想,并發處理能力弱。爬蟲是一種工具性程序,對速度和效率要求都是較高的。
  • JAVA:生態圈很完善,是Python爬蟲最大的競爭對手。但是JAVA語言本身過于笨重,代碼量很大。重構的成本高,任何一個細微的修改都可能導致代碼大量改動。而爬蟲需要經常性的做改動,修改采集代碼。
  • C/C++:運行效率是無敵的。但是學習和開發成本高。寫個爬蟲小程序可能要大半天時間。
  • Python:語法優美、代碼簡潔、開發效率高、支持模塊多。相關的HTTP請求模塊和HTTP解析模塊非常豐富。還有Scrapy和Scrapy-redis框架讓我們開發爬蟲變得異常簡單。

開發工具的安裝

安裝Python

下載地址:https://www.python.org/
或者使用Anaconda:https://www.anaconda.com/
哪個軟件無所謂,只要是Python3.6以上的版本就可以了。

安裝Pycharm

Pycharm Commnity(社區版):對于不需要做web開發,不需要使用Professional(專業版),使用Community版就足夠了,并且這個軟件功能很強大,而且免費!
下載地址:https://www.jetbrains.com/pycharm/download/#section=windows

安裝Chrome:

下載地址:https://www.google.com/chrome/
如果是下載不了,說明被墻了,可用各大軟件管家安裝。

HTTP協議

HTTP協議介紹

  • HTTP協議:全稱是是HyperText Transfer
    Protocol,中文意思是超文本傳輸協議,是一種發布和接收HTML(HyperText Markup
    Language)頁面的方法。服務器端口號是80端口。
  • HTTPS協議:是HTTP協議的加密版本,在HTTP下加入了SSL層。服務器端口號是443端口。
  • 更多介紹請參考百度百科。

URL詳解

URL是Uniform Resource Locator的簡寫,統一資源定位符。 一個URL由以下幾部分組成:

scheme://host:port/path/?query-string=xxx#anchor

scheme:代表的是訪問的協議,一般為http或者https以及ftp等。
host:主機名,域名,比如www.baidu.com。
port:端口號。當你訪問一個網站的時候,瀏覽器默認使用80端口。
path:查找路徑。比如:www.jianshu.com/trending/now,后面的trending/now就是path。
query-string:查詢字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查詢字符串。
anchor:錨點,前端用來做頁面定位的?,F在一些前后端分離項目,也用錨點來做導航。

在瀏覽器中請求一個url,瀏覽器會對這個url進行一個編碼。除英文字母,數字和部分符號外,其他的全部使用百分號+十六進制碼值進行編碼。

常見的請求Method

在Http協議中,定義了八種請求方法。這里介紹兩種常用的請求方法,分別是get請求和post請求。

  • get請求:一般情況下,只從服務器獲取數據下來,并不會對服務器資源產生任何影響的時候會使用get請求。
  • post請求:向服務器發送數據(登錄)、上傳文件等,會對服務器資源產生影響的時候會使用post請求。 以上是在網站開發中常用的兩種方法。并且一般情況下都會遵循使用的原則。但是有的網站和服務器為了做反爬蟲機制,也經常會不按常理出牌,有可能一個應該使用get方法的請求就一定要改成post請求,這個要視情況而定。
  • 常見的請求頭參數

    在http協議中,向服務器發送一個請求,數據分為三部分,第一個是把數據放在url中,第二個是把數據放在body中(在post請求中),第三個就是把數據放在head中。這里介紹在網絡爬蟲中經常會用到的一些請求頭參數:

    User-Agent:瀏覽器名稱。這個在網絡爬蟲中經常會被使用到。請求一個網頁的時候,服務器通過這個參數就可以知道這個請求是由哪種瀏覽器發送的。如果我們是通過爬蟲發送請求,那么我們的User-Agent就是Python,這對于那些有反爬蟲機制的網站來說,可以輕易的判斷你這個請求是爬蟲。因此我們要經常設置這個值為一些瀏覽器的值,來偽裝我們的爬蟲。
    Referer:表明當前這個請求是從哪個url過來的。這個一般也可以用來做反爬蟲技術。如果不是從指定頁面過來的,那么就不做相關的響應。
    Cookie:http協議是無狀態的。也就是同一個人發送了兩次請求,服務器沒有能力知道這兩個請求是否來自同一個人。因此這時候就用cookie來做標識。一般如果想要做登錄后才能訪問的網站,那么就需要發送cookie信息了。

    常見的響應狀態碼

    200:請求正常,服務器正常的返回數據。
    301:永久重定向。比如在訪問www.jingdong.com的時候會重定向到www.jd.com。
    302:臨時重定向。比如在訪問一個需要登錄的頁面的時候,而此時沒有登錄,那么就會重定向到登錄頁面。
    400:請求的url在服務器上找不到。換句話說就是請求url錯誤。
    403:服務器拒絕訪問,權限不夠。
    500:服務器內部錯誤。可能是服務器出現bug了。

    Chrome抓包工具

    Elements

    可以幫助我們分析網頁結構,獲取我們想要的數據。但是Elements下是最終呈現的網頁數據,有時候網頁數據是通過ajax請求得到的,因此Elements下的數據不能完全相信。

    Console

    用來打印網頁的一些信息。

    Sources

    整個網頁所加載的所有文件。

    Network

    查看整個網頁發送的所有網絡請求。一般我們想要去查看某個請求的信息,都可以到這個里面去看。

    總結

    以上是生活随笔為你收集整理的爬虫前奏的全部內容,希望文章能夠幫你解決所遇到的問題。

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