1. 請求庫
reuqests
pip3 install requests
selenium
安裝2.48.0版本可支持PantomJS pip install selenium==2.48.0
最新版本已放棄Phantomjs。
ChromeDriver
谷歌瀏覽器驅動安裝
鏡像站地址
查看Chrome瀏覽器版本
不知道拿哪個Driver版本,百度到chrome瀏覽器v65.0.3325.181此版本發佈日期3-21左右,找到如下版本:
解壓後放到Python安裝目錄下或另配環境變量到Path。
#代碼測試成功
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://item.jd.com/7652139.html")
time.sleep(5)
driver.close()
GeckoDriver
火狐瀏覽器驅動下載地址 好像沒有版本之分
#代碼測試成功
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://item.jd.com/7652139.html")
time.sleep(5)
driver.close()
PhantomJS
實現無界瀏覽器 官方下載地址
下載後解壓將phantomjs.exe放入python安裝路徑下的Scripts目錄或另配環境變量指向此文件所在路徑即可
PhantomJS 是一個無界面的、可腳本編程的WebKit瀏覽器引擎,它原生支持多種Web標準:DOM操作、CSS選擇器、JSON、Canvas以及SVG。
Selenium最新版本目前已經不支持PhantomJS。但Selenium2.48.0舊版本可實現運行時不彈出瀏覽器。
Phantomjs運行效率很高,支持各種參數配置,使用非常方便。
#以下代碼需配合selenium2.48.0 版本庫
from selenium import webdriver
browser =webdriver.PhantomJS()
browser.get('https://www.baidu.com')
baidu =browser.find_element_by_id('su').get_attribute('value')
print(baidu)
browser.close()
另一種實現無界瀏覽器爲 Selenium+Headless Chrome
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options =Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver=webdriver.Chrome(executable_path=’./chromedriver.exe’,chrome_options=chrome_options)
#chromedriver沒有配在環境變量path中時,第一個參數需手動指定驅動絕對路徑
driver.get('https://www.baidu.com')
baidu =driver.find_element_by_id('su').get_attribute('value')
print(baidu)
driver.close()
aiohttp
程序在請求等待中做一些其他的事情,Aiohttp是這樣一個提供異步Web服務的庫。
官方推薦兩個庫:字符編碼檢測庫cchardet,加速DNS解析庫 aiodns。
pip3 install cchardet aiodns
pip3 install aiodns
2.解析庫
tesserocr
Python OCR 識別庫
[1] tesseract 安裝Windows版軟件 獲取tessdata目錄 下載地址tesseract-ocr-setup-3.05.02-20180621.exe
[2] 安裝tesserocr庫 下載地址tesserocr-2.2.2-cp35-cp35m-win32.whl
pip install tesserocr-2.2.2-cp36-cp36m-win_amd64.whl
#驗證tesserocr庫安裝是否成功代碼
import tesserocr
from PIL import Image
imgg=Image.open("C:\\Users\\xxx\\Desktop\\image.png")
print(tesserocr.image_to_text(imgg))
將以上圖片保存至電腦桌面並命名爲image.png
運行上述代碼後,輸出Python3WebSpider
即安裝成功
若報錯 Failed to init API, possibly an invalid tessdata path: C:\mysoft\Python36
則:將D:\Program Files (x86)\Tesseract-OCR
(tesseract的安裝文件夾)下的tessdata
目錄複製到Python安裝目錄中即可。
lxml
Beautiful Soup
pyquery
默認安裝即可
pip3 install lxml
pip3 install beautifulsoup
pip3 install pyquery
3.數據庫
mysql
https://blog.csdn.net/since_1904/article/details/70233403
mongoDB
mongoDB 是一個基於分佈式文件存儲的開源數據庫系統,其內容存儲形式類似JSON對象,它的字段值可以包含其他文檔、數組以及文檔數組,相當靈活。
https://www.cnblogs.com/tim100/p/6721415.html
可視化工具Robo3T
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.1-signed.msi
創建最高權限用戶
Redis
Redis是一個基於內存的高效的非關係型數據庫。
https://github.com/MSOpenTech/redis/releases
可視化工具 RedisDesktop Manager
https://redisdesktop.com/download
https://github.com/uglide/RedisDesktopManager/releases
4.存儲庫
Pymysql
pip install pymysql
PyMongo
pip install pymongo
Redis-py
pip install redis
RedisDump
RedisDump 是一個用於Redis數據導入/導出的工具,要安裝RedisDump前先安裝Rudy。
在Ruby裝完後 命令行 gem install redis-dump
安裝windows版的Ruby最好默認安裝不要更換安裝目錄以防
gem install redis-dump
安裝RedisDump時報錯
5.Web庫
Flask
pip3 install flask
安裝Flask後用以下測試是否可正常運行Flask
from flask import Flask
app=Flask(__name__)
@app.route("/")
def hell0():
return "Hello World!"
if __name__ =="__main__":
app.run()
報錯如下:
UnsupportedOperation Traceback (most recent call last)
<ipython-input-1-d8132276117c> in <module>()
6 return "Hello World!"
7 if __name__ =="__main__":
----> 8 app.run()
c:\mysoft\python36\lib\site-packages\flask\app.py in run(self, host, port, debug, load_dotenv, **options)
936 options.setdefault('threaded', True)
937
--> 938 cli.show_server_banner(self.env, self.debug, self.name, False)
939
940 from werkzeug.serving import run_simple
c:\mysoft\python36\lib\site-packages\flask\cli.py in show_server_banner(env, debug, app_import_path, eager_loading)
627 message += ' (lazy loading)'
628
--> 629 click.echo(message)
630
631 click.echo(' * Environment: {0}'.format(env))
c:\mysoft\python36\lib\site-packages\click\utils.py in echo(message, file, nl, err, color)
257
258 if message:
--> 259 file.write(message)
260 file.flush()
261
UnsupportedOperation: not writable
解決辦法:
You need to edit the echo function definition at ../site-packages/click/utils.py the default value for the file parameter must be sys.stdout instead of None.
Do the same for the secho function definition at ../site-packages/click/termui.py
即[Python安裝目錄\Lib\site-packages\click]目錄下有兩份文件需要修改:
改完後測試如下,正常顯示Hello World!
Tornado
一個支持異步的Web框架,通過使用非阻塞I/O流,它可以支撐成千上萬的開放連接,效率非常高。
pip3 install tornado
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello,world")
def make_app():
return tornado.web.Application([(r"/",MainHandler),])
if __name__ =="__main__":
tornado.ioloop.IOLoop.current().stop()
app=make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
6.App爬取相關庫
Charles
網絡抓包工具,相比Fiddler功能更強大,跨平臺。
mitmproxy
pip3 install mitmproxy
https://github.com/mitmproxy/mitmproxy/releases
Appium
移動端自動化測試工具,模擬點擊、滑動、輸入等操作
appium-desktop-setup-1.6.2.exe
使用Appium還需下載Android SDK,配置SDK環境變量
ANDROID_HOME:sdk路徑
Path:增加sdk路徑下tools和platform-tools文件夾
7.爬蟲框架
pyspider
先下載安裝PyCurl庫pycurl-7.43.1-cp36-cp36m-win_amd64.whl
之後安裝pyspider
pip3 install pyspider
可能報錯:
不知咋地,再輸一次pip3 install pyspider 安裝成功
驗證安裝成功 pyspider all
Scrapy
一個十分強大的爬蟲框架,依賴的基本庫有Twisted 14.0、lxml3.4 和pyOpenSSL 0.14.不同平臺所依賴的庫各不相同。使用Anaconda安裝簡單粗暴。
先安裝Anaconda
之後打開 Anaconda Prompt
輸入conda install Scrapy
即可
Scrapy-Redis
Scrapy的分佈式擴展塊,可以方便地實現Scrapy分佈式爬蟲的搭建。
Scrapy-Redis
依賴於Twisted庫
pip3 install twisted
pip3 install scrapy-redis
Scrapy-Splash
pip3 install scrapy-splash
9.部署安裝庫
Docker
Docker 是一種容器技術,可以將應用和環境等進行打包,形成一個獨立的、類似於IOS的App形式的應用。這個應用可以直接被分發到任意一個支持Docker的環境中,通過簡單的命令即可啓動運行。
Window10 64位版本的安裝地址
其他Windows版本安裝Docker Toolbox
Scrapyd
Scrapyd是一個用於部署和運行Scrapy項目的工具,可將寫好的Scrapy項目上傳至雲主機並通過API來控制其運行。
pip3 install scrapyd
Scrapyd-Client
pip3 install scrapyd-client
Scrapyd API
獲取當前主機的Scrapy任務運行狀況
pip install python-scrapyd-api
Scrapyrt
爲Scrapy提供一個調度的HTTP接口,這樣可以請求一個HTTP接口來調度Scrapy任務。Scrapyrt比Scrapyd更輕量,但不支持分佈式多任務。
pip3 install scrapyrt
Gerapy
一個Scrapy分佈式管理模塊
pip3 install gerapy