網際網路是由網路裝置(網線,路由器,交換機,防火牆等等)和一台臺計算機連線而成,像一張網一樣。
網際網路的核心價值在於資料的共享/傳遞:資料是存放於一台臺計算機上的,而將計算機互聯到一起的目的就是為了能夠方便彼此之間的資料共享/傳遞,否則你只能拿u盤去別人的計算機上拷貝資料了。
3.1 只不過,使用者獲取網路資料的方式是:
3.2 而爬蟲程式要做的就是:
3.1與3.2的區別在於:
我們的爬蟲程式只提取網頁**中對我們有用的資料
4.1 爬蟲的比喻:
如果我們把網際網路比作一張大的蜘蛛網,那一台計算機上的資料便是蜘蛛網上的乙個獵物,而爬蟲程式就是乙隻小蜘蛛,沿著蜘蛛網抓取自己想要的獵物/資料
4.2 爬蟲的定義:
向**發起請求,獲取資源後分析並提取有用資料的程式
4.3 爬蟲的價值:
網際網路中最有價值的便是資料,比如天貓**的商品資訊,鏈家網的租房資訊,雪球網的**投資資訊等等,這些資料都代表了各個行業的真金**,可以說,誰掌握了行業內的第一手資料,誰就成了整個行業的主宰,如果把整個網際網路的資料比喻為一座寶藏,那我們的爬蟲課程就是來教大家如何來高效地挖掘這些寶藏,掌握了爬蟲技能,你就成了所有網際網路資訊公司幕後的老闆,換言之,它們都在免費為你提供有價值的資料。
使用http庫向目標站點發起請求,即傳送乙個request
request包含:請求頭、請求體等
解析html資料:正規表示式,第三方解析庫如beautifulsoup,pyquery等
解析json資料:json模組
解析二進位制資料:以b的方式寫入檔案
資料庫,檔案
http協議:
request:
使用者將自己的資訊通過瀏覽器(socket client)傳送給伺服器(socket server)
response:
ps:瀏覽器在接收response後,會解析其內容來顯示給使用者,而爬蟲程式在模擬瀏覽器傳送請求然後接收response後,是要提取其中的有用資料。
1、請求方式:
常用的請求方式:get,post
其他請求方式:head,put,delete,opthons
ps:用瀏覽器演示get與post的區別,(用登入演示post)
2、請求url
url編碼
會被編碼(看示例**)
from urllib.parse import urlencode
import requests
headers=),headers=headers)
response=requests.get('',params=,headers=headers) #params內部就是呼叫urlencode
print(response.text)
3、請求頭
user-agent:請求頭中如果沒有user-agent客戶端配置,
服務端可能將你當做乙個非法使用者
host
cookies:cookie用來儲存登入資訊
4、請求體
如果是get方式,請求體沒有內容
如果是post方式,請求體是format data
ps:
1、登入視窗,檔案上傳等,資訊都會被附加到請求體內
2、登入,輸入錯誤的使用者名稱密碼,然後提交,就可以看到post,正確登入後頁面通常會跳轉,無法捕捉到post
1、幾種響應狀態
200:代表成功
301:代表跳轉
404:檔案不存在
403:許可權
502:伺服器錯誤
2、respone header
set-cookie:可能有多個,是來告訴瀏覽器,把cookie儲存下來
3、preview就是網頁源**
最主要的部分,包含了請求資源的內容
如網頁html,
二進位制資料等
1、總結爬蟲流程:
爬取--->解析--->儲存
2、爬蟲所需工具:
請求庫:requests,selenium
解析庫:正則,beautifulsoup,pyquery
儲存庫:檔案,mysql,mongodb,redis
3、爬蟲常用框架:
scrapy
4、難點
請求位址(瀏覽器除錯,抓包工具),請求頭(難),請求體(難)
拿到響應體(json格式,xml格式,html格式(bs4,xpath),加密的未知格式(需要解密))
#
import requests
import re
res=requests.get('category_loading.jsp?reqtype=5&categoryid=1&start=0')
# print(res.text)
re_video=''
video_urls=re.findall(re_video,res.text)
# # print(video_urls)
for video in video_urls:
url=''+video
print(url)
res_video=requests.get(url)
# print(res_video.text)
# break
re_video_mp4='hdurl="",sdurl="",ldurl="",srcurl="(.*?)",vdourl=srcurl,skinres'
video_url=re.findall(re_video_mp4,res_video.text)[0]
print(video_url)
video_name=video_url.rsplit('/',1)[-1]
print(video_name)
res_video_content=requests.get(video_url)
with open(video_name,'wb') as f:
for line in res_video_content.iter_content():
f.write(line)
什麼是爬蟲?
世界上80 的爬蟲是基於python開發的,學好爬蟲技能,可為後續的大資料分析 挖掘 機器學習等提供重要的資料來源。什麼是爬蟲?網路爬蟲 又被稱為網頁蜘蛛,網路機械人,在foaf社群中間,更經常的稱為網頁追逐者 是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還...
什麼是爬蟲?
爬蟲入門教程 1 很想做一些爬蟲的基礎性的教程,來與大家共同分享我的一些小經驗,我將以我認為的方式為大家講解網路爬蟲,如果你沒有程式設計基礎,對網路爬蟲有興趣,開始可能稍微有一些小難度,不過我希望能給你帶來一些幫助。對我來說同樣也是相互學習。2 關於ide 整合開發環境 的選擇 我建議大家使用pyc...
什麼是爬蟲
爬蟲,這個詞對於學習python的小夥伴來說一定不陌生,python語言的簡潔性使得在頻繁變化的爬蟲與反爬的對抗中發揮了很好的作用。我們一般自己的爬蟲只是為了定向的獲取到一些目標資料。比如新聞資訊 電商商品資料等等,又很多對技術不是很懂的人以為爬蟲是將病毒之類的東西放到對方的伺服器中,直接去搞人家的...