創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),嘉興企業(yè)網(wǎng)站建設(shè),嘉興品牌網(wǎng)站建設(shè),網(wǎng)站定制,嘉興網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,嘉興網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。這篇文章主要介紹什么是爬蟲,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
如果學(xué)會了python的基本語法,我認(rèn)為入門爬蟲是很容易的。
1:什么是爬蟲
爬蟲(spider,又網(wǎng)絡(luò)爬蟲),是指向網(wǎng)站/網(wǎng)絡(luò)發(fā)起請求,獲取資源后分析并提取有用數(shù)據(jù)的程序。
從技術(shù)層面來說就是 通過程序模擬瀏覽器請求站點的行為,把站點返回的HTML代碼/JSON數(shù)據(jù)/二進制數(shù)據(jù)(圖片、視頻) 爬到本地,進而提取自己需要的數(shù)據(jù),存放起來使用。
2: 爬蟲的基本思路
通過URL或者文件獲取網(wǎng)頁,
分析要爬取的目標(biāo)內(nèi)容所在的位置
用元素選擇器快速提?。≧aw)目標(biāo)內(nèi)容
處理提取出來的目標(biāo)內(nèi)容 ( 通常整理合成一個 Json)
存儲處理好的目標(biāo)內(nèi)容 (比如放到 MongoDB 之類的數(shù)據(jù)庫,或者寫進文件里。)
robots協(xié)議:
網(wǎng)站通過 Robots 協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取,但它僅僅是道德層面上的約束。
爬蟲的用途:
1、12306搶票
2、短信轟炸
3、網(wǎng)絡(luò)投票
4、監(jiān)控數(shù)據(jù)
5、下載圖片、小說、視頻、音樂等
Http和Https:
發(fā)送請求,獲取響應(yīng)的過程其實就是發(fā)送Http或者Https請求和響應(yīng)的過程。
HTTP
超文本傳輸協(xié)議
默認(rèn)端口號:80
HTTPS
HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協(xié)議。
默認(rèn)端口號:443
作用:在傳輸過程中對數(shù)據(jù)進行加密,防止被竄改。
區(qū)別:http因不需要加密,所以性能更高,但安全性差。https安全性高,但是占用服務(wù)器資源。
但是Https是未來的主流,比如小程序、ios、android客戶端的接口都需要Https接口支持。
Http請求報文:
常見請求頭:
Http狀態(tài)碼
常見的 HTTP 狀態(tài)碼:
200 - 請求成功
301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它 URL
404 - 請求的資源(網(wǎng)頁等)不存在
500 - 內(nèi)部服務(wù)器錯誤
Chrome瀏覽器請求分析
分析流程圖:
以上都是爬蟲的預(yù)備知識,掌握了之后就可以寫代碼去爬取我們想要爬的網(wǎng)站了。Python提供了許多網(wǎng)絡(luò)請求的庫,比如Requests、urllib等,這里只說一下requests庫。
Requests庫
安裝:
pip(3) install requests
基本使用:
# 導(dǎo)入模塊 import requests # 定義請求地址 url = 'http://www.baidu.com' # 發(fā)送 GET 請求獲取響應(yīng) response = requests.get(url) # 獲取響應(yīng)的 html 內(nèi)容 html = response.text
response常用屬性:
response.text 返回響應(yīng)內(nèi)容,響應(yīng)內(nèi)容為 str 類型
respones.content 返回響應(yīng)內(nèi)容,響應(yīng)內(nèi)容為 bytes 類型
response.status_code 返回響應(yīng)狀態(tài)碼
response.request.headers 返回請求頭
response.headers 返回響應(yīng)頭
response.cookies 返回響應(yīng)的 RequestsCookieJar 對象
# 獲取字節(jié)數(shù)據(jù) content = response.content # 轉(zhuǎn)換成字符串類型 html = content.decode('utf-8')
自定義請求頭
# 導(dǎo)入模塊 import requests # 定義請求地址 url = 'http://www.baidu.com' # 定義自定義請求頭 headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0. 3578.98 Safari/537.36" } # 發(fā)送自定義請求頭 response = requests.get(url,headers=headers) # 獲取響應(yīng)的 html 內(nèi)容 html = response.text
發(fā)送Get請求
# 導(dǎo)入模塊 import requests # 定義請求地址 url = 'http://www.baidu.com/s' # 定義自定義請求頭 headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0. 3578.98 Safari/537.36" } # 定義 GET 請求參數(shù) params = { "kw":"hello" } # 使用 GET 請求參數(shù)發(fā)送請求 response = requests.get(url,headers=headers,params=params) # 獲取響應(yīng)的 html 內(nèi)容 html = response.text
發(fā)送POST請求
# 導(dǎo)入模塊 import requests # 定義請求地址 url = 'http://www.baidu.com' # 定義自定義請求頭 headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0. 3578.98 Safari/537.36" } # 定義post請求參數(shù) data = { "kw":"hello" } # 使用 POST 請求參數(shù)發(fā)送請求 response = requests.post(url,headers=headers,data=data) # 獲取響應(yīng)的 html 內(nèi)容 html = response.text
使用代理
為什么使用代理:1、讓服務(wù)器以為請求是從多個客戶端發(fā)出的。2、防止暴露我們的真實地址。
使用方法
# 導(dǎo)入模塊 import requests # 定義請求地址 url = 'http://www.baidu.com' # 定義自定義請求頭 headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0. 3578.98 Safari/537.36" } # 定義 代理服務(wù)器 proxies = { "http":"http://IP地址:端口號", "https":"https://IP地址:端口號" } # 使用 POST 請求參數(shù)發(fā)送請求 response = requests.get(url,headers=headers,proxies=proxies) # 獲取響應(yīng)的 html 內(nèi)容 html = response.text
請求中攜帶cookie
作用:有些網(wǎng)站需要登錄,這時候cookie就是記錄了你的用戶信息。
方式:
直接在自定義請求頭中攜帶
通過請求參數(shù)攜帶cookie
# 導(dǎo)入模塊 import requests # 定義請求地址 url = 'http://www.baidu.com' # 定義自定義請求頭 headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0. 3578.98 Safari/537.36" # 方式一:直接在請求頭中攜帶Cookie內(nèi)容 "Cookie": "Cookie值" } # 方式二:定義 cookies 值 cookies = { "xx":"yy" } # 使用 POST 請求參數(shù)發(fā)送請求 response = requests.get(url,headers=headers,cookies=cookies) # 獲取響應(yīng)的 html 內(nèi)容 html = response.text
數(shù)據(jù)提取
作用:從爬蟲獲取的數(shù)據(jù)中提取出我們想要的數(shù)據(jù)。
方式:
json模塊提取
xpath提取
正則提取
beautifulsoup
json
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式
json.loads json字符串 轉(zhuǎn) Python數(shù)據(jù)類型
json.dumps Python數(shù)據(jù)類型 轉(zhuǎn) json字符串
json.load json文件 轉(zhuǎn) Python數(shù)據(jù)類型
json.dump Python數(shù)據(jù)類型 轉(zhuǎn) json文件
ensure_ascii=False 實現(xiàn)讓中文寫入的時候保持為中文
indent=空格數(shù) 通過空格的數(shù)量進行縮緊
xpath
XPath 全稱: XML Path Language,是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。
安裝:
pip(3) install lxml
常用規(guī)則
正則
Python中通過正則表達(dá)對字符串進行匹配是,可以使用re模塊。
# 導(dǎo)入re模塊 import re # 使用match方法進行匹配操作 result = re.match(正則表達(dá)式,要匹配的字符串) # 如果上一步匹配到數(shù)據(jù)的話,可以使用group方法來提取數(shù)據(jù) result.group()
常見語法
以上是什么是爬蟲的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
名稱欄目:什么是爬蟲-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.rwnh.cn/article0/cehdoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、營銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容