什么是爬虫(一文读懂爬虫)
這篇文章主要介紹什么是爬蟲,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
如果學會了python的基本語法,我認為入門爬蟲是很容易的。
1:什么是爬蟲
爬蟲(spider,又網絡爬蟲),是指向網站/網絡發起請求,獲取資源后分析并提取有用數據的程序。
從技術層面來說就是 通過程序模擬瀏覽器請求站點的行為,把站點返回的HTML代碼/JSON數據/二進制數據(圖片、視頻) 爬到本地,進而提取自己需要的數據,存放起來使用。
2: 爬蟲的基本思路
通過URL或者文件獲取網頁,
分析要爬取的目標內容所在的位置
用元素選擇器快速提取(Raw)目標內容
處理提取出來的目標內容 ( 通常整理合成一個 Json)
存儲處理好的目標內容 (比如放到 MongoDB 之類的數據庫,或者寫進文件里。)
robots協議:
網站通過 Robots 協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取,但它僅僅是道德層面上的約束。
爬蟲的用途:
1、12306搶票
2、短信轟炸
3、網絡投票
4、監控數據
5、下載圖片、小說、視頻、音樂等
Http和Https:
發送請求,獲取響應的過程其實就是發送Http或者Https請求和響應的過程。
HTTP
超文本傳輸協議
默認端口號:80
HTTPS
HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協議。
默認端口號:443
作用:在傳輸過程中對數據進行加密,防止被竄改。
區別:http因不需要加密,所以性能更高,但安全性差。https安全性高,但是占用服務器資源。
但是Https是未來的主流,比如小程序、ios、android客戶端的接口都需要Https接口支持。
Http請求報文:
常見請求頭:
Http狀態碼
常見的 HTTP 狀態碼:
200 - 請求成功
301 - 資源(網頁等)被永久轉移到其它 URL
404 - 請求的資源(網頁等)不存在
500 - 內部服務器錯誤
Chrome瀏覽器請求分析
分析流程圖:
以上都是爬蟲的預備知識,掌握了之后就可以寫代碼去爬取我們想要爬的網站了。Python提供了許多網絡請求的庫,比如Requests、urllib等,這里只說一下requests庫。
Requests庫
安裝:
pip(3)installrequests
基本使用:
#導入模塊 importrequests #定義請求地址 url='http://www.baidu.com' #發送GET請求獲取響應 response=requests.get(url) #獲取響應的html內容 html=response.text
response常用屬性:
response.text 返回響應內容,響應內容為 str 類型
respones.content 返回響應內容,響應內容為 bytes 類型
response.status_code 返回響應狀態碼
response.request.headers 返回請求頭
response.headers 返回響應頭
response.cookies 返回響應的 RequestsCookieJar 對象
#獲取字節數據
content=response.content
#轉換成字符串類型
html=content.decode('utf-8')
自定義請求頭
#導入模塊
importrequests
#定義請求地址
url='http://www.baidu.com'
#定義自定義請求頭
headers={
"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_14_0)AppleWebKit/537.36(KHTML,likeGecko)Chrome/71.0.
3578.98Safari/537.36"
}
#發送自定義請求頭
response=requests.get(url,headers=headers)
#獲取響應的html內容
html=response.text
發送Get請求
#導入模塊
importrequests
#定義請求地址
url='http://www.baidu.com/s'
#定義自定義請求頭
headers={
"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_14_0)AppleWebKit/537.36(KHTML,likeGecko)Chrome/71.0.
3578.98Safari/537.36"
}
#定義GET請求參數
params={
"kw":"hello"
}
#使用GET請求參數發送請求
response=requests.get(url,headers=headers,params=params)
#獲取響應的html內容
html=response.text
發送POST請求
#導入模塊
importrequests
#定義請求地址
url='http://www.baidu.com'
#定義自定義請求頭
headers={
"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_14_0)AppleWebKit/537.36(KHTML,likeGecko)Chrome/71.0.
3578.98Safari/537.36"
}
#定義post請求參數
data={
"kw":"hello"
}
#使用POST請求參數發送請求
response=requests.post(url,headers=headers,data=data)
#獲取響應的html內容
html=response.text
使用代理
為什么使用代理:1、讓服務器以為請求是從多個客戶端發出的。2、防止暴露我們的真實地址。
使用方法
#導入模塊
importrequests
#定義請求地址
url='http://www.baidu.com'
#定義自定義請求頭
headers={
"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_14_0)AppleWebKit/537.36(KHTML,likeGecko)Chrome/71.0.
3578.98Safari/537.36"
}
#定義代理服務器
proxies={
"http":"http://IP地址:端口號",
"https":"https://IP地址:端口號"
}
#使用POST請求參數發送請求
response=requests.get(url,headers=headers,proxies=proxies)
#獲取響應的html內容
html=response.text
請求中攜帶cookie
作用:有些網站需要登錄,這時候cookie就是記錄了你的用戶信息。
方式:
直接在自定義請求頭中攜帶
通過請求參數攜帶cookie
#導入模塊
importrequests
#定義請求地址
url='http://www.baidu.com'
#定義自定義請求頭
headers={
"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_14_0)AppleWebKit/537.36(KHTML,likeGecko)Chrome/71.0.
3578.98Safari/537.36"
#方式一:直接在請求頭中攜帶Cookie內容
"Cookie":"Cookie值"
}
#方式二:定義cookies值
cookies={
"xx":"yy"
}
#使用POST請求參數發送請求
response=requests.get(url,headers=headers,cookies=cookies)
#獲取響應的html內容
html=response.text
數據提取
作用:從爬蟲獲取的數據中提取出我們想要的數據。
方式:
json模塊提取
xpath提取
正則提取
beautifulsoup
json
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式
json.loads json字符串 轉 Python數據類型
json.dumps Python數據類型 轉 json字符串
json.load json文件 轉 Python數據類型
json.dump Python數據類型 轉 json文件
ensure_ascii=False 實現讓中文寫入的時候保持為中文
indent=空格數 通過空格的數量進行縮緊
xpath
XPath 全稱: XML Path Language,是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。
安裝:
pip(3)installlxml
常用規則
正則
Python中通過正則表達對字符串進行匹配是,可以使用re模塊。
#導入re模塊 importre #使用match方法進行匹配操作 result=re.match(正則表達式,要匹配的字符串) #如果上一步匹配到數據的話,可以使用group方法來提取數據 result.group()
常見語法
總結
以上是生活随笔為你收集整理的什么是爬虫(一文读懂爬虫)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫画:程序员相亲?哈哈哈哈哈哈
- 下一篇: 杀戮尖塔有安卓版么