❶ pycharm解析器找不到初學者搞了一下午快瘋了
安裝了python後,使用Pycharm時卻找不到Python解釋器,這個問題往往是因為系統環境變數中沒有Python.exe的位置。解決方法是找到Python.exe所在位置,並將其添加至系統環境變數。添加環境變數步驟通常可以通過搜索引擎找到詳細教程。
對於初學者來說,解決這個問題可能需要花費一些時間。首先需要明確Python解釋器指的是Python.exe文件,通常默認安裝地址位於C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32。若未將Python添加至環境變數,將會導致Pycharm無法識別。
解決步驟分為兩部分。第一部分是將Python添加到環境變數。打開安裝包,選擇「modify」,在彈出的窗口中勾選「add python to environment variables」。第二部分則是手動添加Python解釋器。在PyCharm新建項目時選擇「add local」,然後通過「顯示隱藏文件夾和文件」功能找到Python.exe文件的路徑。
值得注意的是,一旦將Python添加到環境變數,PyCharm通常會自動識別Python解釋器,第二步操作可能並非必須。建議初學者在學習階段使用IDLE,避免過度復雜設置導致挫敗感,影響學習進度。
通過以上步驟,可以解決Pycharm找不到Python解釋器的問題,初學者也無需過度擔心,合理安排學習路徑,逐步熟悉編程環境,將有助於提升學習效率。
❷ Python網頁解析庫:用requests-html爬取網頁
Python 中可以進行網頁解析的庫有很多,常見的有 BeautifulSoup 和 lxml 等。在網上玩爬蟲的文章通常都是介紹 BeautifulSoup 這個庫,我平常也是常用這個庫,最近用 Xpath 用得比較多,使用 BeautifulSoup 就不大習慣,很久之前就知道 Reitz 大神出了一個叫 Requests-HTML 的庫,一直沒有興趣看,這回可算歹著機會用一下了。
使用 pip install requests-html 安裝,上手和 Reitz 的其他庫一樣,輕松簡單:
這個庫是在 requests 庫上實現的,r 得到的結果是 Response 對象下面的一個子類,多個一個 html 的屬性。所以 requests 庫的響應對象可以進行什麼操作,這個 r 也都可以。如果需要解析網頁,直接獲取響應對象的 html 屬性:
不得不膜拜 Reitz 大神太會組裝技術了。實際上 HTMLSession 是繼承自 requests.Session 這個核心類,然後將 requests.Session 類里的 requests 方法改寫,返回自己的一個 HTMLResponse 對象,這個類又是繼承自 requests.Response,只是多加了一個 _from_response 的方法來構造實例:
之後在 HTMLResponse 里定義屬性方法 html,就可以通過 html 屬性訪問了,實現也就是組裝 PyQuery 來干。核心的解析類也大多是使用 PyQuery 和 lxml 來做解析,簡化了名稱,挺討巧的。
元素定位可以選擇兩種方式:
方法名非常簡單,符合 Python 優雅的風格,這里不妨對這兩種方式簡單的說明:
定位到元素以後勢必要獲取元素裡面的內容和屬性相關數據,獲取文本:
獲取元素的屬性:
還可以通過模式來匹配對應的內容:
這個功能看起來比較雞肋,可以深入研究優化一下,說不定能在 github 上混個提交。
除了一些基礎操作,這個庫還提供了一些人性化的操作。比如一鍵獲取網頁的所有超鏈接,這對於整站爬蟲應該是個福音,URL 管理比較方便:
內容頁面通常都是分頁的,一次抓取不了太多,這個庫可以獲取分頁信息:
結果如下:
通過迭代器實現了智能發現分頁,這個迭代器裡面會用一個叫 _next 的方法,貼一段源碼感受下:
通過查找 a 標簽裡面是否含有指定的文本來判斷是不是有下一頁,通常我們的下一頁都會通過 下一頁 或者 載入更多 來引導,他就是利用這個標志來進行判斷。默認的以列表形式存在全局: ['next','more','older'] 。我個人認為這種方式非常不靈活,幾乎沒有擴展性。 感興趣的可以往 github 上提交代碼優化。
也許是考慮到了現在 js 的一些非同步載入,這個庫支持 js 運行時,官方說明如下:
使用非常簡單,直接調用以下方法:
第一次使用的時候會下載 Chromium,不過國內你懂的,自己想辦法去下吧,就不要等它自己下載了。render 函數可以使用 js 腳本來操作頁面,滾動操作單獨做了參數。這對於上拉載入等新式頁面是非常友好的。
❸ 值得收藏的Python第三方庫
網路站點爬取
爬取網路站點的庫Scrapy – 一個快速高級的屏幕爬取及網頁採集框架。cola – 一個分布式爬蟲框架。Demiurge – 基於PyQuery 的爬蟲微型框架。feedparser – 通用 feed 解析器。Grab – 站點爬取框架。MechanicalSoup – 用於自動和網路站點交互的 Python 庫。portia – Scrapy 可視化爬取。pyspider – 一個強大的爬蟲系統。RoboBrowser – 一個簡單的,Python 風格的庫,用來瀏覽網站,而不需要一個獨立安裝的瀏覽器。
互動式解析器
互動式 Python 解析器。
IPython – 功能豐富的工具,非常有效的使用互動式 Python。
bpython- 界面豐富的 Python 解析器。
ptpython – 高搜畢臘級互動式Python解析器, 構建於python-prompt-toolkit 之上。
圖像處理
用來操作圖像的庫.
pillow – Pillow 是一個更加易用版的 PIL。
hmap – 圖像直方圖映射。
imgSeek – 一個使用視覺相似性搜索一組圖片集合的項目。
nude.py – 裸體檢測。
pyBarcode – 不藉助 PIL 庫在 Python 程序中生成條形碼。
pygram – 類似 Instagram 的圖像濾鏡。
python-qrcode – 一個純 Python 實現的二維碼生成器。
Quads – 基於四叉樹的計算機藝術。
scikit-image – 一個用於(科學)圖像處理的 Python 庫。
thumbor – 一數螞個小型圖像服務,具有剪裁,尺寸重設和翻轉功能。
wand – MagickWand的Python 綁定。MagickWand 是 ImageMagick的 C API 。
HTTP
使用HTTP的庫。
requests – 人性化的HTTP請求庫。
grequests – requests 庫 + gevent ,用於非同步 HTTP 請求.
httplib2 – 全面的 HTTP 客戶端庫。
treq – 類似 requests 的Python API 構建於 Twisted HTTP 客戶端之上。
urllib3 – 一個具有線程安全連接池,支持文件 post,清晰友好的 HTTP 庫。
資料庫
Python實現的資料庫。
pickleDB – 一個簡單,輕量級鍵值儲存資料庫。
PipelineDB – 流式 SQL 資料庫。
TinyDB – 一個微型的,面向文檔型資料庫。
ZODB – 一個 Python 原生對象資料庫。一個鍵值和對象圖資料庫。
Web 框架
全棧 web 框架。
Django – Python 界最流行的 web 框架。
awesome-django系列
Flask – 一個 Python 微型框架。
https://github.com/humiaozuzu/awesome-flask系列
Pyramid – 一個小巧,快速,接地氣的開源Python web 框架。
awesome-pyramid系列
Bottle – 一個快速小巧,輕量級的 WSGI 微型 web 框架。
CherryPy – 一個極簡的 Python web 框架,服從 HTTP/1.1 協議且具有WSGI 線程池。
TurboGears – 一個可以擴展為全棧解決方案的微型框架。
web.py – 一個 Python 的 web 框架,既簡單,又強大。
web2py – 一個全棧 web 框架和平台,專注於簡單易用。
Tornado – 一個web 框架和非同步網路庫。
HTML處理世滑
處理 HTML和XML的庫。
BeautifulSoup – 以 Python 風格的方式來對 HTML 或 XML 進行迭代,搜索和修改。
bleach – 一個基於白名單的 HTML 清理和文本鏈接庫。
cssutils – 一個 Python 的 CSS 庫。
html5lib – 一個兼容標準的 HTML 文檔和片段解析及序列化庫。
lxml – 一個非常快速,簡單易用,功能齊全的庫,用來處理 HTML 和 XML。
MarkupSafe – 為Python 實現 XML/HTML/XHTML 標記安全字元串。
pyquery – 一個解析 HTML 的庫,類似 jQuery。
untangle – 將XML文檔轉換為Python對象,使其可以方便的訪問。
xhtml2pdf – HTML/CSS 轉 PDF 工具。
xmltodict – 像處理 JSON 一樣處理 XML。
游戲開發
超贊的游戲開發庫。
Cocos2d – cocos2d 是一個用來開發 2D 游戲, 示例和其他圖形/交互應用的框架。基於 pyglet。
Panda3D – 由迪士尼開發的 3D 游戲引擎,並由卡內基梅隴娛樂技術中心負責維護。使用C++編寫, 針對 Python 進行了完全的封裝。
Pygame – Pygame 是一組 Python 模塊,用來編寫游戲。
PyOgre – Ogre 3D 渲染引擎的 Python 綁定,可以用來開發游戲和模擬程序等任何 3D 應用。
PyOpenGL – OpenGL 的 Python 綁定及其相關 APIs。
PySDL2 – SDL2 庫的封裝,基於 ctypes。
RenPy – 一個視覺小說(visual novel)引擎。