數據挖掘 | 選擇最合適的Python Web爬蟲庫

2021-02-21 沈浩老師

在大數據時代,豐富多樣的數據環繞在我們的身邊。收集數據並將數據應用於我們的項目中已經成為每一個數據科學家不可或缺的技能。網際網路上關於各式各樣的Python爬蟲庫的使用教程比比皆是,而如何在具體的應用場景中選擇效率最高且合適的庫是我們初學爬蟲時不可避免要遇見的難題。

Python提供了許多用於爬取web的常用庫,例如Scrapy, Beautiful Soup, Requests, Urllib, and Selenium等,可以肯定的是還有大量已經存在,此外考慮到Python如今受歡迎的程度,更多的庫也會陸續誕生。在本文中,將對剛才提到的5個庫進行概述,由於篇幅原因僅通過代碼實現Scrapy以及對應的最佳應用程式和案例。對於本文的其餘部分,我將闡釋每個庫在不同層面上特點。

1.Scrapy


Scrapy是目前最流行的Python Web爬蟲庫之一, 但Scrapy是一個開源框架,意味著它不僅僅是一個庫,還是一個具有完整系統性的web爬蟲工具。Scrapy最初旨在構建可自動爬取數據的網絡爬蟲,使它能夠用於監視和挖掘數據以及自動化系統的測試。

相較於其他的Python爬蟲庫,它在CPU和內存方面的性能優勢也非常明顯,但Scrapy的缺點在於安裝過程和使之正常運行於設備上可能有點繁瑣。

Overview and installation概述和安裝:


啟動Scrapy之前您需要確保運行的是python3或更高版本,如果是安裝Scrapy,只需在終端中編寫以下命令即可。

Collecting scrapy
  Downloading Scrapy-2.4.0-py2.py3-none-any.whl (239 kB)
     |████████████████████████████████| 239 kB 544 kB/s
Collecting zope.interface>=4.1.3
  Downloading zope.interface-5.1.2-cp37-cp37m-win_amd64.whl (195 kB)
     |████████████████████████████████| 195 kB 1.6 MB/s
Collecting parsel>=1.5.0
  Downloading parsel-1.6.0-py2.py3-none-any.whl (13 kB)
Collecting cryptography>=2.0
  Downloading cryptography-3.1.1-cp37-cp37m-win_amd64.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 2.2 MB/s
Collecting itemloaders>=1.0.1
  Downloading itemloaders-1.0.3-py3-none-any.whl (11 kB)
Collecting queuelib>=1.4.2
  Downloading queuelib-1.5.0-py2.py3-none-any.whl (13 kB)
Collecting pyOpenSSL>=16.2.0
  Downloading pyOpenSSL-19.1.0-py2.py3-none-any.whl (53 kB)
     |████████████████████████████████| 53 kB 279 kB/s
Collecting lxml>=3.5.0; platform_python_implementation == "CPython"
  Downloading lxml-4.5.2-cp37-cp37m-win_amd64.whl (3.5 MB)
     |████████████████████████████████| 3.5 MB 720 kB/s
Collecting protego>=0.1.15
  Downloading Protego-0.1.16.tar.gz (3.2 MB)
     |████████████████████████████████| 3.2 MB 3.2 MB/s
Collecting itemadapter>=0.1.0
  Downloading itemadapter-0.1.1-py3-none-any.whl (7.7 kB)
Collecting Twisted>=17.9.0
  Downloading Twisted-20.3.0-cp37-cp37m-win_amd64.whl (3.1 MB)
     |████████████████████████████████| 3.1 MB 3.3 MB/s
Collecting w3lib>=1.17.0
  Downloading w3lib-1.22.0-py2.py3-none-any.whl (20 kB)
Collecting cssselect>=0.9.1
  Downloading cssselect-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting PyDispatcher>=2.0.5
  Downloading PyDispatcher-2.0.5.tar.gz (34 kB)
Collecting service-identity>=16.0.0
  Downloading service_identity-18.1.0-py2.py3-none-any.whl (11 kB)
Requirement already satisfied: setuptools in d:\program files\python\python37\lib\site-packages (from zope.interface>=4.1.3->scrapy) (47.1.0)
Collecting six>=1.6.0
  Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting cffi!=1.11.3,>=1.8
  Downloading cffi-1.14.3-cp37-cp37m-win_amd64.whl (178 kB)
     |████████████████████████████████| 178 kB 2.2 MB/s
Collecting jmespath>=0.9.5
  Downloading jmespath-0.10.0-py2.py3-none-any.whl (24 kB)
Collecting attrs>=19.2.0
  Downloading attrs-20.2.0-py2.py3-none-any.whl (48 kB)
     |████████████████████████████████| 48 kB 405 kB/s
Collecting Automat>=0.3.0
  Downloading Automat-20.2.0-py2.py3-none-any.whl (31 kB)
Collecting PyHamcrest!=1.10.0,>=1.9.0
  Downloading PyHamcrest-2.0.2-py3-none-any.whl (52 kB)
     |████████████████████████████████| 52 kB 110 kB/s
Collecting constantly>=15.1
  Downloading constantly-15.1.0-py2.py3-none-any.whl (7.9 kB)
Collecting hyperlink>=17.1.1
  Downloading hyperlink-20.0.1-py2.py3-none-any.whl (48 kB)
     |████████████████████████████████| 48 kB 386 kB/s
Collecting incremental>=16.10.1
  Downloading incremental-17.5.0-py2.py3-none-any.whl (16 kB)
Collecting pyasn1-modules
  Downloading pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
     |████████████████████████████████| 155 kB 3.3 MB/s
Collecting pyasn1
  Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
     |████████████████████████████████| 77 kB 693 kB/s
Collecting pycparser
  Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
     |████████████████████████████████| 112 kB 2.2 MB/s
Collecting idna>=2.5
  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 609 kB/s
Using legacy setup.py install for protego, since package 'wheel' is not installed.
Using legacy setup.py install for PyDispatcher, since package 'wheel' is not installed.
Installing collected packages: zope.interface, six, w3lib, lxml, cssselect, parsel, pycparser, cffi, cryptography, jmespath, itemadapter, itemloaders, queuelib, pyOpenSSL, protego, attrs, Automat, PyHamcrest, constantly, idna, hyperlink, incremental, Twisted, PyDispatcher, pyasn1, pyasn1-modules, service-identity, scrapy
    Running setup.py install for protego ... done
    Running setup.py install for PyDispatcher ... done
Successfully installed Automat-20.2.0 PyDispatcher-2.0.5 PyHamcrest-2.0.2 Twisted-20.3.0 attrs-20.2.0 cffi-1.14.3 constantly-15.1.0 cryptography-3.1.1 cssselect-1.1.0 hyperlink-20.0.1 idna-2.10 incremental-17.5.0 itemadapter-0.1.1 itemloaders-1.0.3 jmespath-0.10.0 lxml-4.5.2 parsel-1.6.0 protego-0.1.16 pyOpenSSL-19.1.0 pyasn1-0.4.8 pyasn1-modules-0.2.8 pycparser-2.20 queuelib-1.5.0 scrapy-2.4.0 service-identity-18.1.0 six-1.15.0 w3lib-1.22.0 zope.interface-5.1.2
WARNING: You are using pip version 20.1.1; however, version 20.2.3 is available.
You should consider upgrading via the 'd:\program files\python\python37\python.exe -m pip install --upgrade pip' command.

(向左滑動可查看完整代碼,下同)

一旦成功安裝了Scrapy,就可以通過輸入以下命令運行Scrapy shell:

當您運行此命令時,您將看到如下內容:

2020-10-15 15:37:01 [scrapy.utils.log] INFO: Scrapy 2.4.0 started (bot: scrapybot)
2020-10-15 15:37:01 [scrapy.utils.log] INFO: Versions: lxml 4.5.2.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 20.3.0, Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)], pyOpenSSL 19.1.0 (OpenSSL 1.1.1h  22 Sep 2020), cryptography 3.1.1, Platform Windows-10-10.0.18362-SP0
2020-10-15 15:37:01 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.selectreactor.SelectReactor
2020-10-15 15:37:01 [scrapy.crawler] INFO: Overridden settings:
{'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
 'LOGSTATS_INTERVAL': 0}
2020-10-15 15:37:01 [scrapy.extensions.telnet] INFO: Telnet Password: e600a89bca2b5510
2020-10-15 15:37:01 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole']
2020-10-15 15:37:06 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2020-10-15 15:37:06 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2020-10-15 15:37:06 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2020-10-15 15:37:06 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x000001F735489F48>
[s]   item       {}
[s]   settings   <scrapy.settings.Settings object at 0x000001F735583CC8>
[s] Useful shortcuts:
[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s]   fetch(req)                  Fetch a scrapy.Request and update local objects
[s]   shelp()           Shell help (print this help)
[s]   view(response)    View response in a browser

 

你可以使用Scrapy shell來運行簡單的命令,例如,你可以使用fetch函數來獲取網站的HTML內容。因此,假設我想取回這本書的網站那麼我可以直接在shell實現。

fetch("http://books.toscrape.com/")

>>> fetch("http://books.toscrape.com/")
2020-10-15 15:39:35 [scrapy.core.engine] INFO: Spider opened
2020-10-15 15:39:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://books.toscrape.com/> (referer: None)

現在,您可以使用view方法在默認瀏覽器中打開這個HTML文件。或者你可以列印出頁面的HTML原始碼。

>>> print(response.text)
<!DOCTYPE html>
<!--[if lt IE 7]>      <html lang="en-us" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html lang="en-us" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html lang="en-us" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]-->
    <head>
        <title>
    All products | Books to Scrape - Sandbox
</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <meta name="created" content="24th Jun 2016 09:29" />
        <meta name="description" content="" />
        <meta name="viewport" content="width=device-width" />
        <meta name="robots" content="NOARCHIVE,NOCACHE" />
        <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
        <!--[if lt IE 9]>
        <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
            <link rel="shortcut icon" href="static/oscar/favicon.ico" />

(因篇幅原因我們僅展示部分的爬取數據結果)

view(response)print(response.text)

當然,我們並不因為需要通過瀏覽器打開網頁才能爬取數據而反感,而且你很可能需要從HTML文本中獲得一些特定的信息,通常是使用CSS選擇器完成的,注意在開始之前,你需要檢查你想要獲取的網頁的結構,這樣你才能使用正確的CSS選擇器。

When to use Scarpy?什麼時候使用Scarpy?

Scrapy的最佳使用情況是當您想要進行大規模web抓取或多重自動化測試時,因為Scrapy具有非常良好的結構,從而擁有更好的靈活性和對特定應用的適應性。此外,Scrapy項目的組織方式使其更容易維護和擴展。但如果只是一個小規模的項目,或者你僅僅想爬取一個或幾個網頁,我建議你避免使用Scrapy,因為在這種情況下,Scarpy會使事情過於複雜而不會有任何便利和優勢。

2.Requests


Requests是一個非常簡單的採用Apache2 Licensed開源協議的HTTP庫 ,Request允許用戶向HTTP伺服器發送請求,並以HTML或是JSON的相應形式獲得響應,客戶同時可向伺服器發送POST請求來進行修改或添加操作。通過精心設計的API使得Requests發揮出良好的爬取能力。在終端中編寫以下命令進行安裝。

下面我們從幾個角度比較一下Requests和Scrapy,Requests是頁面級的爬蟲庫,重點在於頁面的下載能力,Requests操作簡單,但是相比於Scrapy來說並發性考慮不足,性能較差。Scrapy是網站級爬蟲框架,並發性良好,性能較高。總體來看,如果開發輕量級項目,或者需要深度定製屬性,那麼使用Requests爬蟲庫是明智的選擇,如果項目規模大,或是需要實現高並發,使用Scrapy框架會體驗更好。

3.Urllib


Urllib是Python內置的網絡協議請求庫,這意味著我們不需要單獨安裝它,Urllib允許開發者從HTTP或FTP協議打開和解析信息。Urllib同樣提供了一些處理url的方法模塊:

urllib.request:請求模塊

它是用來模擬發送請求,就像在瀏覽器裡輸入網址點擊跳轉一樣,需要輸入URL地址。

urllib.error:異常處理模塊

當請求出現錯誤時,調用該模塊函數會攔截這些異常,通過重試或其他操作確保程序不會意外終止。

urllib.parse :解析模塊

解析模塊定義了url的標準接口,實現url的各種抽取。

urllib.robotparser:robots.txt解析模塊

介紹urllib.robotparser模塊之前先來說說Robots協議,全稱「網絡爬蟲排除標準(Robots Exclusion Protocol)」,網站會通過該協議告訴搜尋引擎頁面抓取的權限,從而知道頁面是否可以抓取。

urllib.robotparser模塊在爬取網站時,會首先查詢此網站根目錄下是否存在robots.txt,若存在,便會按照txt來確定訪問的範圍,若txt文件不存在,可爬取所有沒被加密的頁面。Urllib比Requests稍微複雜一些,但是如果你想要更好的控制爬取請求,Urllib是更好的選擇。

4.Beautiful Soup

Beautiful Soup是一個Python內置庫,用於從XML和HTML文件中提取信息。我們可以將Beautiful Soup看作為一個解析器庫。

Beautiful Soup用來解析HTML比較簡單,API非常人性化,支持CSS選擇器和Python標準庫中的HTML解析器同時也支持XML的XML解析器。在終端中編寫以下命令進行安裝。

pip install beautifulsoup4

如果你看到這裡,恭喜你已經具備使用爬蟲爬取數據的能力了。我們可以利用Urllib或Requests從網頁中獲取HTML文本,然後使用Beautiful Soup來清理它。

什麼時候使用Beautiful Soup?


如果你剛剛開始接觸爬蟲或是Python,那麼Beautiful Soup是比較的不錯的選擇,當你爬取非結構化文檔時,Beautiful Soup便會展現出它的優勢。但如果你正在參與開發一個大規模的項目,Beautiful Soup便不再是明智的選擇,隨著項目規模的擴大,Beautiful Soup將會變得難以維護。

5.Selenium


Selenium是一套完整的web應用程式測試系統,包含了測試錄製、編寫、運行和測試的並行處理。你可以使用它打開一個網頁,單擊一個按鈕,然後獲得結果。Selenium的核心Selenium Core基於JsUnit,完全由Javascript編寫,可以運行於任何支持Javascript的瀏覽器上。在終端中編寫以下命令進行安裝。

為項目使用正確的庫可以節省大量的時間和精力,這對於項目的成功至關重要。這需要我們深入了解每個爬蟲庫的優缺點,從而引導我們在未來的項目中選擇和使用最適合的爬蟲。

寫在後面:因近期在學習爬蟲技術,有幸看到這篇關於Python爬蟲庫選擇的文章,在不同應用場景中如何選擇更合適的爬蟲庫來提高效率非常重要,通過這篇文章可以了解現今最火的5個Python爬蟲庫合適應用場景,從而提高數據爬取效率。

指導老師

長按二維碼關注我們

歡迎關注微信公眾號「沈浩老師」

原文連結:

https://towardsdatascience.com/choose-the-best-python-web-scraping-library-for-your-application-91a68bc81c4f

相關焦點

  • python web學習路線知識點分享!
    如果你想做python web相關的東西,下邊這些東西可以參考學習:基礎:linux命令,計算機網絡,python語言,http協議,基礎算法數據>結構python: 內置庫,爬蟲庫,web框架,資料庫接口等。
  • Python大數據綜合應用 :零基礎入門機器學習、深度學習算法原理與案例
    共4天8節,講解機器學習和深度學習的模型理論和代碼實踐,梳理機器學習、深度學習、計算機視覺的技術框架,從根本上解決如何使用模型、優化模型的問題;每次課中,首先闡述算法理論和少量公式推導,然後使用真實數據做數據挖掘、機器學習、深度學習的數據分析、特徵選擇、調參和結果比較。
  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    共4天8節,講解機器學習和深度學習的模型理論和代碼實踐,梳理機器學習、深度學習、計算機視覺的技術框架,從根本上解決如何使用模型、優化模型的問題;每次課中,首先闡述算法理論和少量公式推導,然後使用真實數據做數據挖掘、機器學習、深度學習的數據分析、特徵選擇、調參和結果比較。
  • 用Python進行Web爬取數據
    實現此目的最有效,最簡單的方法之一就是通過網頁抓取。我個人發現網絡抓取是一種非常有用的技術,可以從多個網站收集數據。如今,某些網站還為你可能希望使用的許多不同類型的數據提供API,例如Tweets或LinkedIn帖子。但是有時你可能需要從不提供特定API的網站收集數據。這就是web抓取能力派上用場的地方。
  • 為什麼入門大數據選擇Python而不是Java?
    畢竟出自wuli馬大大之口,今年二月份我開始了學習大數據的道路,直到現在對大數據的學習脈絡和方法也漸漸清晰。今天我們就來談談學習大數據入門語言的選擇。當然並不只是我個人之見,此外我搜集了各路大神的見解綜合起來跟大家做個討論。java和python的區別到底在哪裡?
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    本課程為python教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精
  • Python 網頁爬蟲 & 文本處理 & 科學計算 & 機器學習 & 數據挖掘兵器譜
    離開騰訊創業後,第一個作品課程圖譜也是選擇了Python系的Flask框架,漸漸的將自己的絕大部分工作交給了Python。這些年來,接觸和使用了很多Python工具包,特別是在文本處理,科學計算,機器學習和數據挖掘領域,有很多很多優秀的Python工具包可供使用,所以作為Pythoner,也是相當幸福的。
  • Python網頁爬蟲&文本處理&科學計算&機器學習&數據挖掘兵器譜(轉)
    離開騰訊創業後,第一個作品課程圖譜也是選擇了Python系的Flask框架,漸漸的將自己的絕大部分工作交給了Python。這些年來,接觸和使用了很多Python工具包,特別是在文本處理,科學計算,機器學習和數據挖掘領域,有很多很多優秀的Python工具包可供使用,所以作為Pythoner,也是相當幸福的。
  • Python轉行指南:從0基礎到入職名企,我有這些經驗想分享給你!
    從大四實習到現在,做python web相關的東西也一年左右了,從一個毫無web基礎的菜鳥成為一個僅僅算是入門的python工程師。上周拿到了木瓜移動的offer,入職之前寫一下自己的經歷幫助希望想要入門python web的同學吧,同時也希望國內的python圈可以發展更好,有更多喜歡python的同學能加入到python程式設計師的世界裡。
  • 學會Python+Selenium,分分鐘搭建Web自動化框架!
    支持多開發語言,如:Python、Java、ruby、C#等,本次選擇Python3作為開發語言。二、用python做測試的優點學習難度小,開發周期短。對目前國內大多數測試人員來說,編碼經驗不足,python是個很好的入門語言。膠水語言,能與C++, Java, COM, and .NET,Object-C 整合。
  • Python爬蟲基礎教學(寫給入門的新手)
    前言剛學完python基礎,想學習爬蟲的新手,這裡有你想要的東西。本文著重點在於教新手如何學習爬蟲,並且會以外行人的思維進行形象地講解。最近我一兄弟想學,我就想寫個教學給他,然後想不如分享到網絡上,給熱愛學習的人們一起學習探討。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    想要入門Python 爬蟲首先需要解決四個問題:1.熟悉python編程2.了解HTML3.了解網絡爬蟲的基本原理4.學習使用python爬蟲庫1、熟悉python編程剛開始入門爬蟲,初學者無需學習python的類,多線程,模塊和其他稍微困難的內容。
  • 讓你喜歡的八個 PHP 網頁爬蟲庫與工具
    網頁抓取是開發人員每天遇到的常規操作,比如抓取文章,商品,股票,火車票,秒殺等數據。在後端開發中,網頁抓取非常受歡迎。PHP有不少網頁爬蟲庫。雖然有許多PHP 網頁抓取框架供人們選擇。但我堅定地認為Goutte和Pantherfor Symfony項目是一個最強力的組合。在這篇文章中,我們將探討一些能夠以對需求最有用的方式,包括抓取網站並存儲到資料庫中。在PHP中,我們可以使用如下庫進行數據抓取。
  • 數據科學|十大最受歡迎的Python庫
    隨著在人工智慧、機器學習、web開發和桌面應用程式開發等領域的廣泛使用,Python在數據分析市場上佔據了壟斷地位。考慮到Python廣泛的普及和認可,那麼它具有歸因於數據科學的豐富庫也就不足為奇了。科學庫是Python的代名詞! 您只要給它起個名字,就有幾乎所有囊括了所有。考慮到目前的市場趨勢,數據科學是最受歡迎的職業選擇之一。
  • python開發web服務 bottle框架
    但是每次我用pip命令,最下方都會提示升級You are using pip version 9.0.3, however version 20.0.2 is available., static_file, app)import jsonimport MySQLdb #本例子需要操作資料庫,否則可以不寫這行,這個資料庫包pip估計安裝不會成功,我是用yum install MySQL-python成功的import sys
  • Python爬蟲教學(寫給入門的新手)
    前言剛學完python基礎,想學習爬蟲的新手,這裡有你想要的東西。
  • python久負盛名且成熟的web框架
    Django簡介發布於2005年,最負盛名且成熟的Python網絡框架:最初用來製作在線新聞的Web站點開源Web框架,遵守BSD對MVC和MTV框架的理解MVC框架與MTV框架可以理解為同一種框架,只是命名不一樣,前者是相對於java等程式語言命名的,後者是相對於python命名的。MVC框架(MTV框架)是一種 把業務邏輯、數據、界面顯示分離而設計創建的Web 應用程式的開發模式。
  • 第7天|10天搞定Python網絡爬蟲,Scrapy爬更快
    說了好幾天用requests進行網絡爬蟲編程了,是時候換成專業,高效率的爬蟲庫--Scrapy了。我之所以一開始用requests,就想告訴你,網絡爬蟲,方法挺多的,合適就行。還有在之前說的各種解析庫,在Scrapy中,也會經常用到,特別是Lxml的XPath。如果之前不說,留到現在還得說。
  • 一步步教你開始使用Python開發Web應用
    那麼你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。  學習Python的基礎  截至目前,Python有兩個版本,2.7.5和3.3是目前Python的穩定版本。你選擇哪個學習並不重要,因為區別非常小——尤其對於初學者而言。