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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫前奏

發(fā)布時(shí)間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫前奏 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

爬蟲前奏

什么是爬蟲

“網(wǎng)絡(luò)爬蟲,又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者,是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本,另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。”

爬蟲應(yīng)用場景

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

為什么用Python寫爬蟲

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

開發(fā)工具的安裝

安裝Python

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

安裝Pycharm

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

安裝Chrome:

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

HTTP協(xié)議

HTTP協(xié)議介紹

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

URL詳解

URL是Uniform Resource Locator的簡寫,統(tǒng)一資源定位符。 一個(gè)URL由以下幾部分組成:

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

scheme:代表的是訪問的協(xié)議,一般為http或者h(yuǎn)ttps以及ftp等。
host:主機(jī)名,域名,比如www.baidu.com。
port:端口號。當(dāng)你訪問一個(gè)網(wǎng)站的時(shí)候,瀏覽器默認(rèn)使用80端口。
path:查找路徑。比如:www.jianshu.com/trending/now,后面的trending/now就是path。
query-string:查詢字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查詢字符串。
anchor:錨點(diǎn),前端用來做頁面定位的。現(xiàn)在一些前后端分離項(xiàng)目,也用錨點(diǎn)來做導(dǎo)航。

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

常見的請求Method

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

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

    在http協(xié)議中,向服務(wù)器發(fā)送一個(gè)請求,數(shù)據(jù)分為三部分,第一個(gè)是把數(shù)據(jù)放在url中,第二個(gè)是把數(shù)據(jù)放在body中(在post請求中),第三個(gè)就是把數(shù)據(jù)放在head中。這里介紹在網(wǎng)絡(luò)爬蟲中經(jīng)常會用到的一些請求頭參數(shù):

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

    常見的響應(yīng)狀態(tài)碼

    200:請求正常,服務(wù)器正常的返回?cái)?shù)據(jù)。
    301:永久重定向。比如在訪問www.jingdong.com的時(shí)候會重定向到www.jd.com。
    302:臨時(shí)重定向。比如在訪問一個(gè)需要登錄的頁面的時(shí)候,而此時(shí)沒有登錄,那么就會重定向到登錄頁面。
    400:請求的url在服務(wù)器上找不到。換句話說就是請求url錯(cuò)誤。
    403:服務(wù)器拒絕訪問,權(quán)限不夠。
    500:服務(wù)器內(nèi)部錯(cuò)誤。可能是服務(wù)器出現(xiàn)bug了。

    Chrome抓包工具

    Elements

    可以幫助我們分析網(wǎng)頁結(jié)構(gòu),獲取我們想要的數(shù)據(jù)。但是Elements下是最終呈現(xiàn)的網(wǎng)頁數(shù)據(jù),有時(shí)候網(wǎng)頁數(shù)據(jù)是通過ajax請求得到的,因此Elements下的數(shù)據(jù)不能完全相信。

    Console

    用來打印網(wǎng)頁的一些信息。

    Sources

    整個(gè)網(wǎng)頁所加載的所有文件。

    Network

    查看整個(gè)網(wǎng)頁發(fā)送的所有網(wǎng)絡(luò)請求。一般我們想要去查看某個(gè)請求的信息,都可以到這個(gè)里面去看。

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。