您好,登錄后才能下訂單哦!
百度百科和維基百科對網(wǎng)絡(luò)爬蟲的定義:簡單來說爬蟲就是抓取目標網(wǎng)站內(nèi)容的工具,一般是根據(jù)定義的行為自動進行抓取, 對網(wǎng)頁或數(shù)據(jù)的分析與過濾;抓取的網(wǎng)頁URL進行爬行策略
爬蟲要做的是什么?
我們所謂的上網(wǎng)便是由用戶端計算機發(fā)送請求給目標計算機,將目標計算機的數(shù)據(jù)下載到本地的過程。
用戶獲取網(wǎng)絡(luò)數(shù)據(jù)的方式是:
瀏覽器提交請求->下載網(wǎng)頁代碼->解析/渲染成頁面。
爬蟲程序要做的就是:
模擬瀏覽器發(fā)送請求->下載網(wǎng)頁代碼->只提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫或文件中
區(qū)別在于:
我們的爬蟲程序只提取網(wǎng)頁代碼中對我們有用的數(shù)據(jù)
為什么要做爬蟲
爬蟲的價值:
互聯(lián)網(wǎng)中最有價值的便是數(shù)據(jù),比如天貓商城的商品信息,鏈家網(wǎng)的租房信息,雪球網(wǎng)的證券投資信息等等,
這些數(shù)據(jù)都代表了各個行業(yè)的真金白銀,可以說,誰掌握了行業(yè)內(nèi)的第一手數(shù)據(jù),誰就成了整個行業(yè)的主宰,如果把整個互聯(lián)網(wǎng)的數(shù)據(jù)比喻為一座寶藏,
那我們的爬蟲課程就是來教大家如何來高效地挖掘這些寶藏,掌握了爬蟲技能,你就成了所有互聯(lián)網(wǎng)信息公司幕后的老板,換言之,它們都在免費為你提供有價值的數(shù)據(jù)。
#1、發(fā)起請求
使用http庫向目標站點發(fā)起請求,即發(fā)送一個Request
Request包含:請求頭、請求體等
#2、獲取響應(yīng)內(nèi)容
如果服務(wù)器能正常響應(yīng),則會得到一個Response
Response包含:html,json,圖片,視頻等
#3、解析內(nèi)容
解析html數(shù)據(jù):正則表達式,第三方解析庫如Beautifulsoup,pyquery等
解析json數(shù)據(jù):json模塊
解析二進制數(shù)據(jù):以b的方式寫入文件
#4、保存數(shù)據(jù)
數(shù)據(jù)庫
文件
#http協(xié)議:http://www.cnblogs.com/qiangyuge/p/8353307.html
#Request:用戶將自己的信息通過瀏覽器(socket client)發(fā)送給服務(wù)器(socket server)
#Response:服務(wù)器接收請求,分析用戶發(fā)來的請求信息,然后返回數(shù)據(jù)(返回的數(shù)據(jù)中可能包含其他鏈接,如:圖片,js,css等)
#ps:瀏覽器在接收Response后,會解析其內(nèi)容來顯示給用戶,而爬蟲程序在模擬瀏覽器發(fā)送請求然后接收Response后,是要提取其中的有用數(shù)據(jù)。
#1、請求方式:
常用的請求方式:GET,POST
其他請求方式:HEAD,PUT,DELETE,OPTHONS
ps:用瀏覽器演示get與post的區(qū)別,(用登錄演示post)
post與get請求最終都會拼接成這種形式:k1=xxx&k2=yyy&k3=zzz
post請求的參數(shù)放在請求體內(nèi):
可用瀏覽器查看,存放于form data內(nèi)
get請求的參數(shù)直接放在url后
#2、請求url
url全稱統(tǒng)一資源定位符,如一個網(wǎng)頁文檔,一張圖片
一個視頻等都可以用url唯一來確定
url編碼
https://www.baidu.com/s?wd=圖片
圖片會被編碼(看示例代碼)
網(wǎng)頁的加載過程是:
加載一個網(wǎng)頁,通常都是先加載document文檔,
在解析document文檔的時候,遇到鏈接,則針對超鏈接發(fā)起下載圖片的請求
#3、請求頭
User-agent:請求頭中如果沒有user-agent客戶端配置,
服務(wù)端可能將你當做一個非法用戶
host
cookies:cookie用來保存登錄信息
一般做爬蟲都會加上請求頭
#4、請求體
如果是get方式,請求體沒有內(nèi)容
如果是post方式,請求體是format data
ps:
1、登錄窗口,文件上傳等,信息都會被附加到請求體內(nèi)
2、登錄,輸入錯誤的用戶名密碼,然后提交,就可以看到post,正確登錄后頁面通常會跳轉(zhuǎn),無法捕捉到post
'''
遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import requests
from urllib.parse import urlencode
# 請求方式
kwords = input("請輸入關(guān)鍵字:>>").strip()
res = urlencode({"wd":kwords}) # # 請求的url,當你在百度輸入中文的時候,你把url拿下來會變成下面的這樣格式的url,所以得urlencode一下
url ="https://www.baidu.com/s?"+res #https://www.baidu.com/s?wd=%E5%9B%BE%E7%89%87
response = requests.get(
# 請求的url,當你在百度輸入中文的時候,你把url拿下來會變成下面的這樣格式的url
url,
# 請求頭
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/63.0.3239.108 Safari/537.36",
},
)
with open("a.html","w",encoding="utf-8") as f:
f.write(response.text)
print(response.status_code)
'''
遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import requests
from urllib.parse import urlencode
kwords = input("請輸入關(guān)鍵字:>>").strip()
response = requests.get(
"https://www.baidu.com/s?",
# 請求的url,當你在百度輸入中文的時候,你把url拿下來會變成下面的這樣格式的url
params={
"wd": kwords,
'pn': 20
},
# 請求頭
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",
},
)
with open("b.html", "w", encoding="utf-8") as f:
f.write(response.text)
print(response.status_code)
#1、響應(yīng)狀態(tài)
200:代表成功
301:代表跳轉(zhuǎn)
404:文件不存在
403:權(quán)限
502:服務(wù)器錯誤
#2、Respone header
set-cookie:可能有多個,是來告訴瀏覽器,把cookie保存下來
#3、preview就是網(wǎng)頁源代碼
最主要的部分,包含了請求資源的內(nèi)容
如網(wǎng)頁html,圖片
二進制數(shù)據(jù)等
#1、總結(jié)爬蟲流程:
爬取--->解析--->存儲
#2、爬蟲所需工具:
請求庫:requests,selenium
解析庫:正則,beautifulsoup,pyquery
存儲庫:文件,MySQL,Mongodb,Redis
#3、爬蟲常用框架:
scrapy
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。