python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析
點(diǎn)擊藍(lán)色“不太靈光的程序員”關(guān)注我喲
加個(gè)“星標(biāo)”,每天上午 09:30,干貨推送!
文中使用的組件庫(kù)僅限于Python語言,由于最近收到一些同學(xué)的留言說,按照網(wǎng)上的教程一步一步的學(xué)習(xí),卻頻繁的出現(xiàn)報(bào)錯(cuò),很多情況是因?yàn)榘姹静灰恢碌膯栴}導(dǎo)致的,我會(huì)在文中描述示例的庫(kù)版本號(hào),新手同學(xué)還需多加留意。
爬蟲程序分析
我們可以使用很多方式來完成一個(gè)爬蟲程序的編寫,可以使用比較完善的爬蟲框架(博主是并沒有使用過這方面的框架,只會(huì)些小打小鬧的,所以不過多描述),也可以使用request、aiohttp、BeautifulSoup庫(kù)實(shí)現(xiàn)基礎(chǔ)的爬蟲功能,我們后面的學(xué)習(xí)也是基于這幾個(gè)庫(kù)迭代完成的。
Python主流的爬蟲框架
你以為Python爬蟲框架只有Scrapy么,Python中還有些主流的爬蟲框架我們?cè)诖撕?jiǎn)答介紹下
1.Scrapy
Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。。用這個(gè)框架可以輕松爬下來如亞馬遜商品信息之類的數(shù)據(jù)。
項(xiàng)目地址:https://scrapy.org/
2.PySpider
pyspider 是一個(gè)用python實(shí)現(xiàn)的功能強(qiáng)大的網(wǎng)絡(luò)爬蟲系統(tǒng),能在瀏覽器界面上進(jìn)行腳本的編寫,功能的調(diào)度和爬取結(jié)果的實(shí)時(shí)查看,后端使用常用的數(shù)據(jù)庫(kù)進(jìn)行爬取結(jié)果的存儲(chǔ),還能定時(shí)設(shè)置任務(wù)與任務(wù)優(yōu)先級(jí)等。
項(xiàng)目地址:https://github.com/binux/pyspider
3.Crawley
Crawley可以高速爬取對(duì)應(yīng)網(wǎng)站的內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫(kù),數(shù)據(jù)可以導(dǎo)出為JSON、XML等。
項(xiàng)目地址:http://project.crawley-cloud.com/
4.Portia
Portia是一個(gè)開源可視化爬蟲工具,可讓您在不需要任何編程知識(shí)的情況下爬取網(wǎng)站!簡(jiǎn)單地注釋您感興趣的頁(yè)面,Portia將創(chuàng)建一個(gè)蜘蛛來從類似的頁(yè)面提取數(shù)據(jù)。
項(xiàng)目地址:https://github.com/scrapinghub/portia
5.Newspaper
Newspaper可以用來提取新聞、文章和內(nèi)容分析。使用多線程,支持10多種語言等。
項(xiàng)目地址:https://github.com/codelucas/newspaper
6.Beautiful Soup
Beautiful Soup 是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫(kù).它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式.Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間。
項(xiàng)目地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
7.Grab
Grab是一個(gè)用于構(gòu)建Web看板的Python框架。借助Grab,您可以構(gòu)建各種復(fù)雜的網(wǎng)頁(yè)抓取工具,從簡(jiǎn)單的5行腳本到處理數(shù)百萬個(gè)網(wǎng)頁(yè)的復(fù)雜異步網(wǎng)站抓取工具。Grab提供一個(gè)API用于執(zhí)行網(wǎng)絡(luò)請(qǐng)求和處理接收到的內(nèi)容,例如與HTML文檔的DOM樹進(jìn)行交互。
項(xiàng)目地址:http://docs.grablib.org/en/latest/#grab-spider-user-manual
8.Cola
Cola是一個(gè)分布式的爬蟲框架,對(duì)于用戶來說,只需編寫幾個(gè)特定的函數(shù),而無需關(guān)注分布式運(yùn)行的細(xì)節(jié)。任務(wù)會(huì)自動(dòng)分配到多臺(tái)機(jī)器上,整個(gè)過程對(duì)用戶是透明的。
項(xiàng)目地址:https://github.com/chineking/cola
基于Cola實(shí)現(xiàn)的爬蟲位于contrib/目錄下。目前實(shí)現(xiàn)了四個(gè)爬蟲:
wiki:維基百科。
weibo:新浪微博爬蟲。從初始用戶出發(fā),然后是其關(guān)注和粉絲,依次類推,抓取指定個(gè)數(shù)的新浪微博用戶的微博、個(gè)人信息、關(guān)注和粉絲。其中,用戶微博只獲取了內(nèi)容、贊的個(gè)數(shù)、轉(zhuǎn)發(fā)和評(píng)論的個(gè)數(shù)等等,而沒有具體去獲取此微博被轉(zhuǎn)發(fā)和評(píng)論的內(nèi)容。
generic(unstable):通用爬蟲,只需配置,而無需修改代碼。目前Cola實(shí)現(xiàn)了一個(gè)抽取器(cola/core/extractor),能夠從網(wǎng)頁(yè)正文中自動(dòng)抽取主要內(nèi)容,即去除類似邊欄和底腳等內(nèi)容。但是,此抽取器目前準(zhǔn)確度還不夠,效率也不夠高,所以需要謹(jǐn)慎使用。
weibosearch(unstable):新浪微博搜索的爬蟲。這個(gè)爬蟲使用cola.core.opener.SpynnerOpener,基于spynner實(shí)現(xiàn)了一個(gè)Opener能夠執(zhí)行JavaScript和Ajax代碼。目前這個(gè)爬蟲存在的問題是:新浪微博可能會(huì)將其識(shí)別成機(jī)器人,因此有可能會(huì)讓輸入驗(yàn)證碼。
到此,想要學(xué)框架的同學(xué)可以準(zhǔn)備關(guān)閉網(wǎng)頁(yè)了。
先了解下后面爬取需要的模塊
Requests 模塊
幫助文檔:https://requests.readthedocs.io/en/master/
雖然Python的標(biāo)準(zhǔn)庫(kù)中 urllib2 模塊已經(jīng)包含了平常我們使用的大多數(shù)功能,但是它的 API 使用起來讓人感覺不太好,而 Requests 自稱 “HTTP for Humans”,說明使用更簡(jiǎn)潔方便。
Requests 繼承了urllib2的所有特性。Requests支持HTTP連接保持和連接池,支持使用cookie保持會(huì)話,支持文件上傳,支持自動(dòng)確定響應(yīng)內(nèi)容的編碼,支持國(guó)際化的 URL 和 POST 數(shù)據(jù)自動(dòng)編碼。
核心功能:
Keep-Alive & 連接池
國(guó)際化域名和 URL
帶持久 Cookie 的會(huì)話
瀏覽器式的 SSL 認(rèn)證
自動(dòng)內(nèi)容解碼
基本/摘要式的身份認(rèn)證
優(yōu)雅的 key/value Cookie
自動(dòng)解壓
Unicode 響應(yīng)體
HTTP(S) 代理支持
文件分塊上傳
流下載
連接超時(shí)
分塊請(qǐng)求
支持 .netrc
Requests 支持 Python 2.6—2.7以及3.3—3.7,而且能在 PyPy 下完美運(yùn)行。
簡(jiǎn)單的頁(yè)面獲取
我們來嘗試獲取BOSS的首頁(yè)。
# Python3.7# requests==2.23.0
import requests
def run():
req = requests.get('https://www.zhipin.com')
if req.status_code == 200:
print(req.content.decode("utf-8"))
if __name__ == "__main__":
run()
BOSS首頁(yè)獲取到的部分信息
aiohttp 模塊
aiohttp是一個(gè)為Python提供異步HTTP 客戶端/服務(wù)端編程,基于asyncio(Python用于支持異步編程的標(biāo)準(zhǔn)庫(kù))的異步庫(kù)。由于是基于asyncio的,所以支持 Python 3.5+,如果你使用的是Python 3.4, 請(qǐng)將await替換成yield from,將async 替換成帶有 @corotine裝飾器的def。
幫助文檔:https://docs.aiohttp.org/en/stable/
核心功能:
同時(shí)支持客戶端使用和服務(wù)端使用。
同時(shí)支持服務(wù)端WebSockets組件和客戶端WebSockets組件,開箱即用。
web服務(wù)器具有中間件,信號(hào)組件和可插拔路由的功能。
簡(jiǎn)單的頁(yè)面獲取
我們還是來獲取BOSS的首頁(yè)。
# Python3.7# aiohttp==3.6.3
import aiohttp
async def run():
async with aiohttp.ClientSession() as session:
async with session.get('https://www.zhipin.com') as resp:
assert resp.status == 200
print(await resp.text())
if __name__ == "__main__":
asyncio.run(run())
BOSS首頁(yè)獲取到的部分信息
bs4模塊
Beautiful Soup 4.4.0 文檔
Beautiful Soup 是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫(kù)。
它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式。Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間。
Beautiful Soup 4 支持 Python2.x 和Python3.x
Beautiful Soup3 支持 Python2.x
Beautiful Soup 4兼容Beautiful Soup3的功能
幫助文檔:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
簡(jiǎn)單的頁(yè)面數(shù)據(jù)提取
我們還是來提取BOSS的title。
# Python3.7# requests==2.23.0
import requests
def run():
req = requests.get('https://www.zhipin.com')
if req.status_code == 200:
content = req.content.decode("utf-8")
content = bs(content, "html.parser")
print(content.find("title").text)
if __name__ == "__main__":
run()
BOSS招聘信息爬取
到此我們需要的基本工具就介紹完了,點(diǎn)波關(guān)注,后面會(huì)繼續(xù)分享 如何將這些工具運(yùn)用到實(shí)戰(zhàn)中。
end
推薦閱讀:
BOSS直聘招聘信息獲取之網(wǎng)站分析
BOSS直聘招聘信息獲取之爬蟲工具分析
BOSS直聘招聘信息獲取之爬蟲程序分析
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图的十字链表
- 下一篇: 高翔《视觉SLAM十四讲》从理论到实践