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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python项目开发】爬虫基础知识

發布時間:2024/8/1 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python项目开发】爬虫基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


爬蟲,早有耳聞。整個世界就像一張巨大的蜘蛛網,而爬蟲就是在描述這種千絲萬縷的關系。持續更新,梳理。

越偉大,越有獨創精神的人越喜歡孤獨。(赫胥黎)


爬蟲

爬蟲就是模擬客戶端(瀏覽器)發送網絡請求,獲取響應,按照規則提取數據的程序。對于爬取到的數據可以呈現在網頁或APP上,也可以對其進行數據分析尋找規律。


(一)URL

瀏覽器的請求

比如在瀏覽器隨意做個搜索,這里搜索“爬蟲”,空白處右鍵->審查元素->Network->F5->左側Name欄選擇一項,觀察右側Headers->General->Request URL,即為請求的URL(對應一個網址)。

“?”后面的就是參數,參數之間以”&”隔開。

瀏覽器請求URL地址對應的響應

在下圖Elements里的元素就是瀏覽器得到的響應。

瀏覽器請求URL地址過程:當服務器響應之后(network下找到對應的地址->response),這些字符串被渲染顯示到屏幕上,但是瀏覽器會發現響應字符串中有很多URL地址,緊接著又會請求,于是就會顯示很多Elements。 但是爬蟲的話不會得到這么多Elements,只會得到一個服務器返回的響應。
總結如下:瀏覽器請求url地址,得到elements下面的內容(當前url地址對應的響應 + 圖片 + css + js)。 爬蟲請求url地址,得到當前url地址對應的響應(network–>reponse或者查看網頁源碼的內容)

HTTP與HTTPS

HTTP:超文本傳輸協議。明文傳輸的(數據不加密直接傳輸)
HTTPS:HTTP+SSL(安全套接字層)。以密文傳輸的,傳輸的數據是經過加密的,接收方需經過解密之后才能得到加密前的數據。
因此HTTP的效率要高于HTTPS,但是不安全。

請求行

請求行就是General中的內容

Request URL:請求的url。
Request Method:請求的方式。 get或者post方式
Status Code:狀態碼。返回200表示正確
Referrer Policy:表示你是哪里進入這個頁面的

請求頭

點擊view source

主要參數:
GET:表示是get方式請求的,后面的值是路徑和參數 。
connection:keep-alive。 表示可以建立常鏈接 。
Cache-Control:緩存控制。max-age=0 表示不緩存任何東西 。
User-Agent(重要):用戶代理。服務器得知是誰在請求它,什么平臺下的什么版本瀏覽器,或者程序 。
Cookie(重要):用來存儲用戶信息,每次請求都會發送給對方瀏覽器。 訪問需要登錄的頁面時,對方會根據Cookie來判斷是不是爬蟲。

請求體

請求體是攜帶數據的,get請求沒有請求體,post請求有請求體。get請求的攜帶的數據直接通過參數給出了。 post請求常用于登陸注冊 ;post請求攜帶的數據量比get請求大與多,常用于傳輸大文本的時候。

響應頭

主要看Set-Cookie字段:對方服務器通過該字段設置cookie到本地。

抓包

指在network里面查找需要的東西的過程。


(二)requests庫

Python中的一個HTTP網絡請求庫,用來簡化網絡請求!

常見reponse方法:
response.text:打印返回的數據
response.content:打印返回的數據
response.status_code:返回狀態碼
response.request,headers:返回請求頭
response.headers:返回響應頭

#1 爬取第一個網頁 import requests url = "http://www.baidu.com" response = requests.get(url) # get請求(數據從服務器發到客戶端) response.encoding = "utf-8" # 修改編碼格式 print(response.status_code) #狀態碼(200表示一切正常) assert response.status_code == 200 print(response.request.url) # 請求url # print(response.url) # 響應url(結果同上) print(response.request.headers) #請求頭1 print(response.headers) #請求頭2 print(response.text) #返回的數據headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"} response = requests.get("http://www.baidu.com", headers=headers) # 加入請求頭 print(response.content.decode()) # 響應內容(內容更完整,結果未貼) 200 http://www.baidu.com/ {'User-Agent': 'python-requests/2.19.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} {'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'Keep-Alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sun, 18 Aug 2019 14:02:14 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:28:12 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'} <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新聞</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地圖</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>視頻</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>貼吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登錄</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登錄</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多產品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>關于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必讀</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意見反饋</a>&nbsp;京ICP證030173號&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html> # 2 發送帶參數的請求 headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"} p={"wd":"傳智播客"} url_temp="http://www.baidu.com/s" # url="http://www.baidu.com/s?wd={}".format("傳智播客") # 可代替(即合并搜索參數) # r=url.get(url, headers = headers) # 可代替 r=requests.get(url_temp, headers = headers, params=p) print(r.status_code) print(r.request.url) #地址被url編碼http://www.baidu.com/s?wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2 傳智播客(URL解碼結果)

附作者:Python爬蟲獲取豆瓣網評分Top200的電影——親測可用,網址
https://download.csdn.net/download/qq_35778860/56379309


說明:本文是從《python項目案例開發從入門到實戰》書中總結而來,如有疑問,還望各位同仁與前輩指正。

附作者相關研究:
Python:
Python實現線性回歸、邏輯回歸、KNN、SVM、樸素貝葉斯、決策樹、K-Means7種機器學習算法的經典案例——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/20715889
Python實現飛機大戰的完整代碼——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/57165535
Python爬蟲獲取豆瓣網評分Top200的電影——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/56379309
Python根據下拉選項繪制雷達圖和柱形圖(異常預控平臺)——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/20715210
Python根據下拉選項繪制雷達圖和柱形圖(異常預控平臺)——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/20715210
python實現雷達圖——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/20695215
基于python的北京房屋出租數據可視化分析與3D展示——親測可用,鏈接
https://download.csdn.net/download/qq_35778860/20675051
基于Python設計的web接口聊天機器人
https://download.csdn.net/download/qq_35778860/66662593
用Python進行自然語言處理(中文).rar
https://download.csdn.net/download/qq_35778860/63652414
《機器學習實戰》全書python代碼——很全很完整
https://download.csdn.net/download/qq_35778860/62203534
Python3實現十大排序算法
https://download.csdn.net/download/qq_35778860/61630851
C#
成績管理系統(C/S結構的應用系統,含access數據庫)——C#實現
https://download.csdn.net/download/qq_35778860/66967387
C#實現學生信息管理系統(包括增刪改查功能)——親測可用
https://download.csdn.net/download/qq_35778860/61620149
Matlab
極限學習機ELM+OSELM+KELM+半監督SSELM+USELM的matlab程序(附完整代碼)
https://download.csdn.net/download/qq_35778860/56378533
P+近鄰KNN+LS最小二乘算法的matlab代碼——親測可用(含實例)
https://download.csdn.net/download/qq_35778860/56378309
基于matlab的卷積神經網絡實現手寫數字識別
https://download.csdn.net/download/qq_35778860/66667747
基于MATLAB的人工蜂群算法
https://download.csdn.net/download/qq_35778860/66665944
利用MATLABsilulink搭建有源電力濾波器仿真.zip
https://download.csdn.net/download/qq_35778860/63659150
動態規劃MATLAB程序.zip
https://download.csdn.net/download/qq_35778860/63658838
基于matlab的模式識別基礎實例源代碼.zip
https://download.csdn.net/download/qq_35778860/63658486
Matlab_動態窗口法實現機器人在障礙環境下的模擬避碰仿真.zip
https://download.csdn.net/download/qq_35778860/63658232
bp神經網絡整定pid參數matlab應用程序.rar
https://download.csdn.net/download/qq_35778860/63656174
利用深度學習的matlab程序編碼仿真實現圖像分割.zip
https://download.csdn.net/download/qq_35778860/63655267
Java
基于java的信息管理系統
https://download.csdn.net/download/qq_35778860/66658535
Java swing學生成績系統(源碼+數據庫腳本).rar
https://download.csdn.net/download/qq_35778860/63653951
Jsp
jsp學生信息管理系統(源碼+數據庫腳本).zip
https://download.csdn.net/download/qq_35778860/63653655
SCN
隨機配置網絡SCN實現的matlab代碼——親測可用
https://download.csdn.net/download/qq_35778860/61636684
BLS
寬度學習BLS的matlab代碼+Mnist數據集
https://download.csdn.net/download/qq_35778860/61635045
Mysql
Mysql增刪改查代碼操作,很全很完整——親測可用
https://download.csdn.net/download/qq_35778860/61626574
C
基于單片機的交通燈控制系統設計(含代碼,原理圖)——C語言實現
https://download.csdn.net/download/qq_35778860/60383113
基于單片機的溫度控制系統設計代碼(含代碼,原理圖)——C語言實現
https://download.csdn.net/download/qq_35778860/60379923
郭天祥51單片機書中400例程——親測可用
https://download.csdn.net/download/qq_35778860/58014293
其他
微信轉盤抽獎小程序源碼.rar
https://download.csdn.net/download/qq_35778860/63652890

總結

以上是生活随笔為你收集整理的【python项目开发】爬虫基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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