不會(huì)這幾個(gè)庫,都不敢說我會(huì)Python爬蟲
很多朋友不知道Python爬蟲怎么入門,怎么學(xué)習(xí),到底要學(xué)習(xí)哪些內(nèi)容。今天我來給大家說說學(xué)習(xí)爬蟲,我們必須掌握的一些第三方庫。
廢話不多說,直接上干貨。
1.請(qǐng)求庫
1. requests
GitHub:https://github.com/psf/requests
requests庫應(yīng)該是現(xiàn)在做爬蟲最火最實(shí)用的庫了,非常的人性化。有關(guān)于它的使用我之前也寫過一篇文章 一起看看Python之Requests庫 ,大家可以去看一下。
有關(guān)于requests最詳細(xì)的使用方法,大家可以參考官方文檔:https://requests.readthedocs.io/en/master/
使用小案例:
- >>> import requests
- >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
- >>> r.status_code
- 200
- >>> r.headers['content-type']
- 'application/json; charset=utf8'
- >>> r.encoding
- 'utf-8'
- >>> r.text
- u'{"type":"User"...'
- >>> r.json()
- {u'disk_usage': 368627, u'private_gists': 484, ...}
2. urllib3
GitHub:https://github.com/urllib3/urllib3
urllib3是一個(gè)非常強(qiáng)大的http請(qǐng)求庫,提供一系列的操作URL的功能。
有關(guān)于它的詳細(xì)使用方法可以參考:https://urllib3.readthedocs.io/en/latest/
使用小案例:
- >>> import urllib3
- >>> http = urllib3.PoolManager()
- >>> r = http.request('GET', 'http://httpbin.org/robots.txt')
- >>> r.status
- 200
- >>> r.data
- 'User-agent: *\nDisallow: /deny\n'
3.selenium
GitHub:https://github.com/SeleniumHQ/selenium
自動(dòng)化測試工具。一個(gè)調(diào)用瀏覽器的 driver,通過這個(gè)庫你可以直接調(diào)用瀏覽器完成某些操作,比如輸入驗(yàn)證碼。
對(duì)于這個(gè)庫并非只是Python才能用,像JAVA、Python、C#等都能夠使用selenium這個(gè)庫
有關(guān)于Python語言如何去使用這個(gè)庫,大家可以去訪問https://seleniumhq.github.io/selenium/docs/api/py/ 查看官方文檔
使用小案例:
- from selenium import webdriver
- browser = webdriver.Firefox()
- browser.get('http://seleniumhq.org/')
4.aiohttp
GitHub:https://github.com/aio-libs/aiohttp
基于 asyncio 實(shí)現(xiàn)的 HTTP 框架。異步操作借助于 async/await 關(guān)鍵字,使用異步庫進(jìn)行數(shù)據(jù)抓取,可以大大提高效率。
這個(gè)屬于進(jìn)階爬蟲時(shí)候必須掌握的異步庫。有關(guān)于aiohttp的詳細(xì)操作,可以去官方文檔:https://aiohttp.readthedocs.io/en/stable/
使用小案例:
- import aiohttp
- import asyncio
- async def fetch(session, url):
- async with session.get(url) as response:
- return await response.text()
- async def main():
- async with aiohttp.ClientSession() as session:
- html = await fetch(session, 'http://python.org')
- print(html)
- if __name__ == '__main__':
- loop = asyncio.get_event_loop()
- loop.run_until_complete(main())
2 解析庫
1、beautifulsoup
官方文檔:https://www.crummy.com/software/BeautifulSoup/
html 和 XML 的解析,從網(wǎng)頁中提取信息,同時(shí)擁有強(qiáng)大的API和多樣解析方式。一個(gè)我經(jīng)常使用的解析庫,對(duì)于html的解析是非常的好用。對(duì)于寫爬蟲的人來說這也是必須掌握的庫。
2、lxml
GitHub:https://github.com/lxml/lxml
支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
3、pyquery
GitHub:https://github.com/gawel/pyquery
jQuery 的 Python 實(shí)現(xiàn),能夠以 jQuery 的語法來操作解析 HTML 文檔,易用性和解析速度都很好。
3. 數(shù)據(jù)存儲(chǔ)庫
1、pymysql
GitHub:https://github.com/PyMySQL/PyMySQL
官方文檔:https://pymysql.readthedocs.io/en/latest/
一個(gè)純 Python 實(shí)現(xiàn)的 MySQL 客戶端操作庫。非常的實(shí)用、非常的簡單。
2、pymongo
GitHub:https://github.com/mongodb/mongo-python-driver
官方文檔:https://api.mongodb.com/python/
顧名思義,一個(gè)用于直接連接 mongodb 數(shù)據(jù)庫進(jìn)行查詢操作的庫。
3、redisdump
使用方法:https://blog.csdn.net/zhwitbird/article/details/81279406
redis-dump是將redis和json互轉(zhuǎn)的工具;redis-dump是基于ruby開發(fā),需要ruby環(huán)境,而且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安裝2.0版本的ruby。需要先安裝ruby的管理工具rvm安裝高版本的ruby。