了演示瀏覽器和API的使用,我們將會研究Facebook的網(wǎng)站。目前,從月活用戶數(shù)維度來看,F(xiàn)acebook是世界上最大的社交網(wǎng)絡(luò)之一,因此其用戶數(shù)據(jù)非常有價值。
圖1所示為Packt出版社的Facebook頁面。
當(dāng)你查看該頁的源代碼時,可以找到最開始的幾篇日志,但是后面的日志只有在瀏覽器滾動時才會通過AJAX加載。另外,F(xiàn)acebook還提供了一個移動端界面,正如第1章所述,這種形式的界面通常更容易抓取。該頁面在移動端的展示形式如圖9.6所示。
圖1
圖2
當(dāng)我們與移動端網(wǎng)站進(jìn)行交互,并使用瀏覽器工具查看時,會發(fā)現(xiàn)該界面使用了和之前相似的結(jié)構(gòu)來處理AJAX事件,因此該方法無法簡化抓取。雖然這些AJAX事件可以被逆向工程,但是不同類型的Facebook頁面使用了不同的AJAX調(diào)用,而且依據(jù)我的過往經(jīng)驗,F(xiàn)acebook經(jīng)常會變更這些調(diào)用的結(jié)構(gòu),所以抓取這些頁面需要持續(xù)維護(hù)。因此,如第5章所述,除非性能十分重要,否則最好使用瀏覽器渲染引擎執(zhí)行JavaScript事件,然后訪問生成的HTML頁面。
下面的代碼片段使用Selenium自動化登錄Facebook,并跳轉(zhuǎn)到給定頁面的URL。
from selenium import webdriver def get_driver(): try: return webdriver.PhantomJS() except: return webdriver.Firefox() def facebook(username, password, url): driver=get_driver() driver.get('https://facebook.com') driver.find_element_by_id('email').send_keys(username) driver.find_element_by_id('pass').send_keys(password) driver.find_element_by_id('loginbutton').submit() driver.implicitly_wait(30) # wait until the search box is available, # which means it has successfully logged in search=driver.find_element_by_name('q') # now logged in so can go to the page of interest driver.get(url) # add code to scrape data of interest here ...
然后,可以調(diào)用該函數(shù)加載你感興趣的Facebook頁面,并使用合法的Facebook郵箱和密碼,抓取生成的HTML頁面。
如第1章所述,抓取網(wǎng)站是在其數(shù)據(jù)沒有給出結(jié)構(gòu)化格式時的最末之選。而Facebook確實為絕大多數(shù)公共或私有(通過你的用戶賬號)數(shù)據(jù)提供了API,因此我們需要在構(gòu)建加強的瀏覽器抓取之前,首先檢查一下這些API提供的訪問是否已經(jīng)能夠滿足需求。
首先要做的事情是確定通過API哪些數(shù)據(jù)是可用的。為了解決該問題,我們需要先查閱其API文檔。開發(fā)者文檔的網(wǎng)址為https://developers.facebook.com/docs,在這里給出了所有不同類型的API,包括圖譜 API,該API中包含了我們想要的信息。如果你需要構(gòu)建與Facebook的其他交互(通過API或SDK),可以隨時查閱該文檔,該文檔會定期更新并且易于使用。
此外,根據(jù)文檔鏈接,我們還可以使用瀏覽器內(nèi)的圖譜 API探索工具,其地址為https://developers.facebook.com/tools/explorer/。如圖3所示,探索工具是用來測試查詢及其結(jié)果的很好的地方。
圖3
在這里,我可以搜索API,獲取PacktPub的Facebook頁面ID。圖譜探索工具還可以用來生成訪問口令,我們可以用它來定位API。
想要在Python中使用圖譜API,我們需要使用具有更高級請求的特殊訪問口令。幸運的是,有一個名為facebook-sdk(https://facebook-sdk.readthedocs.io)的維護(hù)良好的庫可以供我們使用。我們只需通過pip安裝它即可。
pip install facebook-sdk
下面是使用Facebook的圖譜API從Packt出版社頁面中抽取數(shù)據(jù)的代碼示例。
In [1]: from facebook import GraphAPI In [2]: access_token='....' # insert your actual token here In [3]: graph=GraphAPI(access_token=access_token, version='2.7') In [4]: graph.get_object('PacktPub') Out[4]: {'id': '204603129458', 'name': 'Packt'}
我們可以看到和基于瀏覽器的圖譜探索工具相同的結(jié)果。我們可以通過傳遞想要抽取的額外信息,來獲得頁面中的更多信息。要確定使用哪些信息,我們可以在圖譜文檔中看到頁面中所有可用的字段,文檔地址為https://developers.facebook.com/docs/graph-api/reference/page/。使用關(guān)鍵字參數(shù)fields,我們可以從API中抽取這些額外可用的字段。
In [5]: graph.get_object('PacktPub', fields='about,events,feed,picture') Out[5]: {'about': 'Packt provides software learning resources, from eBooks to video courses, to everyone from web developers to data scientists.', 'feed': {'data': [{'created_time': '2017-03-27T10:30:00+0000', 'id': '204603129458_10155195603119459', 'message': "We've teamed up with CBR Online to give you a chance to win 5 tech eBooks - enter by March 31! http://bit.ly/2mTvmeA"}, ... 'id': '204603129458', 'picture': {'data': {'is_silhouette': False, 'url': 'https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/14681705_10154660327349459_7 2357248532027065_n.png?oh=d0a26e6c8a00cf7e6ce957ed2065e430&oe=59660265'}}}
我們可以看到該響應(yīng)是格式良好的Python字典,我們可以很容易地進(jìn)行解析。
圖譜API還提供了很多訪問用戶數(shù)據(jù)的其他調(diào)用,其文檔可以從Facebook的開發(fā)者頁面中獲取,網(wǎng)址為https://developers.facebook.com/docs/graph-api。根據(jù)所需數(shù)據(jù)的不同,你可能還需要創(chuàng)建一個Facebook開發(fā)者應(yīng)用,從而獲得可用時間更長的訪問口令。
業(yè)在網(wǎng)站建設(shè)時,很多同時也做了手機端的網(wǎng)站,為了豐富網(wǎng)站的版面和內(nèi)容,給網(wǎng)站添加了大量的圖片做美化。網(wǎng)站的圖片是一個網(wǎng)站能給用戶最直觀的信息表現(xiàn),而對于搜索引擎而言,蜘蛛在隨機抓取網(wǎng)站圖片時候的識別能力還沒有那么強。如果文字很少,圖片很多也會給手機端網(wǎng)站SEO優(yōu)化帶來一定的困難。
抓取手機網(wǎng)站圖片
不過,隨著搜索引擎算法的不斷成熟,現(xiàn)在百度也能抓取網(wǎng)站的圖片,例如:網(wǎng)站的LOGO、以及和文章主題相關(guān)的圖片等等。十堰網(wǎng)站建設(shè)公司SEO優(yōu)化顧問經(jīng)過長時間的觀察,總結(jié)出了以下六種方法,協(xié)助我們優(yōu)化網(wǎng)站和手機端的圖片,以達(dá)到優(yōu)化友好,迅速被錄入的作用。
一、不要盜用圖片盡量原創(chuàng)
盡量自己做圖片,有很多免費的圖片素材,我們可以通過拼接,做出我們需要的圖片。
在平時工作的時候,發(fā)現(xiàn)和自己網(wǎng)站相關(guān)的圖片可以先保存下來,在本地做出分類和標(biāo)記。網(wǎng)站需要圖片的時候,看看相關(guān)的圖片,自己著手做一個圖片。這是一個長期積累的過程,隨之時間的增加,自己的素材量也會越來越大。熟練了再做圖片就得心應(yīng)手了。
圖片版權(quán)
再這里特別要注意,現(xiàn)在很多圖片是有版權(quán)的,一點不要去使用那些有版權(quán)的圖片,不然不光會侵權(quán),還會讓搜索引擎降低對你網(wǎng)站的信任值。
二、網(wǎng)站圖片保存路徑
這個問題很多站長都沒有注意,圖片在傳到到網(wǎng)站的時候,盡量把圖片保存在一個目錄下面,或者根據(jù)網(wǎng)站欄目做好相應(yīng)的圖片目錄,上傳的時候路徑要相對固定,方便蜘蛛抓取,蜘蛛在訪問到這個目錄的時候就會“知道”這個目錄里面保存的是圖片;
圖片文件命名最好使用一些有規(guī)律的或者意義的方法,可以使用時間、欄目名稱或者網(wǎng)站名稱來命名。例如:SEO優(yōu)化下面的圖片可以使用“SEOYH2018-6-23-36”這種命名,前面“SEOYH”是SEO優(yōu)化的簡拼,中間是時間,最后是圖片的ID。
為什么要這么做呢?其實這樣是培養(yǎng)搜索引擎蜘蛛抓取習(xí)慣,方便將來更快的識別網(wǎng)站圖片內(nèi)容。讓蜘蛛抓的順心了,網(wǎng)站被收錄的幾率就增加了,何樂而不為呢!
三、圖片周圍要有相關(guān)文字
文章的開頭就說了,網(wǎng)站圖片是能把信息直接呈現(xiàn)給用戶一個方法,搜索引擎在抓取網(wǎng)站內(nèi)容的時候,也會檢測這篇文章是否有配圖、視頻或者表格等等,這些都是可以增加文章分?jǐn)?shù)值的元素,其他的幾個形式暫時不表,這里我們只說說關(guān)于圖片周圍相關(guān)文字的介紹。
圖片符合主題
首先圖片周邊文字要與圖片本身內(nèi)容相符,例如你的文章說的是做網(wǎng)站優(yōu)化,里面配圖是一道菜譜的圖片,這不是掛羊頭賣狗肉么?用戶的訪問感會極差,搜索引擎通過相關(guān)算法識別這張圖片以后,也會覺得圖文不符,給你差評哦。
所以,每篇文章最少要配一張相應(yīng)的圖片,而且在圖片的周圍要出現(xiàn)和你網(wǎng)站標(biāo)題相關(guān)的內(nèi)容。不但能幫助搜索引擎理解圖片,還可以增加文章的可讀性、用戶體驗友好度以及相關(guān)性。
四、圖片添加alt、title標(biāo)簽
許多站長在添加網(wǎng)站圖片時可能沒有留意這些細(xì)節(jié),有的可能覺得麻煩,希望大家千萬別有這種想法,這是大錯特錯的。
搜索引擎抓取網(wǎng)站圖片的時候,atl標(biāo)簽是它首先抓取的,也是識別圖片內(nèi)容最重要的核心因素之一,圖片的alt屬性是直接告訴搜索引擎這是啥網(wǎng)站圖片,以及這張要表達(dá)什么意思;
title標(biāo)簽是用戶指向這張圖片的時候,會顯示的提示內(nèi)容,這是增加用戶體驗度和增加網(wǎng)站關(guān)鍵詞的一個小技巧。
alt和title標(biāo)簽
還有就是這兩個屬性,會給有閱讀障礙的訪問者提供訪問的便利,例如:有盲人在訪問你網(wǎng)站的時候,他看不到屏幕上的內(nèi)容,可能是通過讀屏軟件來閱讀的,如果有alt屬性,軟件會直接讀出alt屬性里的文字,給他們的訪問提供方便。
五、圖片的大小和分辨率
盡管兩者看起來有些相同,但還是有很大的差別,相同大小的圖片,分辨率更高的話,網(wǎng)站最終體積也會越大。這一點大家要搞清楚。
網(wǎng)站的上的圖片,一直以來都提倡用盡量小的圖片,去最大化呈現(xiàn)內(nèi)容。為什么要這樣呢?因為小尺寸的圖片會加載的更快,不會讓訪問者等待太久,特別是手機訪問的時候,由于手機上網(wǎng)速度和流量的限制,用戶更愿意訪問能立即打開的頁面,小尺寸圖片就更有優(yōu)勢了。
在這里我們盡量做好平衡,在圖片不失真的情況下,尺寸最好盡量的小?,F(xiàn)在有很多在線給圖片瘦身的工具,各位站長可以去嘗試一下,把網(wǎng)站的圖片適當(dāng)?shù)膲嚎s一下,一方面可以減少你服務(wù)器帶寬的壓力,另外還能給用戶有流暢的體驗。
六、手機端自動適應(yīng)
很多站長都遇到過網(wǎng)站在電腦訪問圖片顯示很正常,可是從手機端就會出現(xiàn)錯位等等情況,這就是大尺寸的圖片給不同尺寸的終端造成錯位和顯示不全的情況。
圖片自適應(yīng)手機端
其實這個問題很好解決,在添加圖片的時候?qū)捀咦詈貌灰褂媒^對大小,使用百分比就解決了。具體說,CSS代碼不能指定像素寬度:width:xxx px;只能指定百分比寬度:width: xx%;或者width:auto就可以了。
這樣做的目的也是為了讓百度的移動蜘蛛抓取的時候有個良好的體驗,這也是為了更符合百度移動落地頁體驗。
以上介紹了在網(wǎng)站SEO優(yōu)化如何抓取手機網(wǎng)站圖片的一些技巧,其實本質(zhì)就是為了給用戶更好的訪問體驗。你做網(wǎng)站的時候本著這個目的,相信搜索引擎一定會青睞你的網(wǎng)站。
來源:十堰SEO優(yōu)化顧問
來源:盧松松博客
者:Kerry Parker
翻譯:田曉寧
校對:丁楠雅
本文約2900字,建議閱讀10分鐘。
本教程以在Fast Track上收集百強公司的數(shù)據(jù)為例,教你抓取網(wǎng)頁信息。
作為一名數(shù)據(jù)科學(xué)家,我在工作中所做的第一件事就是網(wǎng)絡(luò)數(shù)據(jù)采集。使用代碼從網(wǎng)站收集數(shù)據(jù),當(dāng)時對我來說是一個完全陌生的概念,但它是最合理、最容易獲取的數(shù)據(jù)來源之一。經(jīng)過幾次嘗試,網(wǎng)絡(luò)抓取已經(jīng)成為我的第二天性,也是我?guī)缀趺刻焓褂玫募寄苤弧?/p>
在本教程中,我將介紹一個簡單的例子,說明如何抓取一個網(wǎng)站,我將從Fast Track上收集2018年百強公司的數(shù)據(jù):
Fast Track:http://www.fasttrack.co.uk/
使用網(wǎng)絡(luò)爬蟲將此過程自動化,避免了手工收集數(shù)據(jù),節(jié)省了時間,還可以讓所有數(shù)據(jù)都放在一個結(jié)構(gòu)化文件中。
用Python實現(xiàn)一個簡單的網(wǎng)絡(luò)爬蟲的快速示例,您可以在GitHub上找到本教程中所介紹的完整代碼。
GitHub鏈接:https://github.com/kaparker/tutorials/blob/master/pythonscraper/websitescrapefasttrack.py
以下是本文使用Python進(jìn)行網(wǎng)頁抓取的簡短教程概述:
準(zhǔn)備開始
在開始使用任何Python應(yīng)用程序之前,要問的第一個問題是:我需要哪些庫?
對于web抓取,有一些不同的庫需要考慮,包括:
在本例中我們使用Beautiful Soup。你可以使用Python包管理器 pip 安裝Beautiful Soup:
pip install BeautifulSoup4
安裝好這些庫之后,讓我們開始吧!
檢查網(wǎng)頁
要知道在Python代碼中需要定位哪些元素,首先需要檢查網(wǎng)頁。
要從Tech Track Top 100 companies收集數(shù)據(jù),可以通過右鍵單擊感興趣的元素來檢查頁面,然后選擇檢查。這將打開HTML代碼,我們可以在其中看到每個字段包含在其中的元素。
Tech Track Top 100 companies鏈接:http://www.fasttrack.co.uk/league-tables/tech-track-100/league-table/
右鍵單擊感興趣的元素并選擇“Inspect”,顯示html元素。
由于數(shù)據(jù)存儲在一個表中,因此只需幾行代碼就可以直接獲取數(shù)據(jù)。如果您想練習(xí)抓取網(wǎng)站,這是一個很好的例子,也是一個好的開始,但請記住,它并不總是那么簡單!
所有100個結(jié)果都包含在<tr> 元素的行中,并且這些在一頁上都可見。情況并非總是如此,當(dāng)結(jié)果跨越多個頁面時,您可能需要更改網(wǎng)頁上顯示的結(jié)果數(shù)量,或者遍歷所有頁面以收集所有信息。
League Table網(wǎng)頁上顯示了包含100個結(jié)果的表。檢查頁面時,很容易在html中看到一個模式。結(jié)果包含在表格中的行中:
<table class="tableSorter">
重復(fù)的行<tr> 將通過在Python中使用循環(huán)來查找數(shù)據(jù)并寫入文件來保持我們的代碼最小化!
附注:可以做的另一項檢查是網(wǎng)站上是否發(fā)出了HTTP GET請求,該請求可能已經(jīng)將結(jié)果作為結(jié)構(gòu)化響應(yīng)(如JSON或XML格式)返回。您可以在檢查工具的網(wǎng)絡(luò)選項卡中進(jìn)行檢查,通常在XHR選項卡中進(jìn)行檢查。刷新頁面后,它將在加載時顯示請求,如果響應(yīng)包含格式化結(jié)構(gòu),則使用REST客戶端(如Insomnia)返回輸出通常更容易。
刷新網(wǎng)頁后,頁面檢查工具的網(wǎng)絡(luò)選項卡
使用Beautiful Soup解析網(wǎng)頁html
現(xiàn)在您已經(jīng)查看了html的結(jié)構(gòu)并熟悉了將要抓取的內(nèi)容,是時候開始使用Python了!
第一步是導(dǎo)入將用于網(wǎng)絡(luò)爬蟲的庫。我們已經(jīng)討論過上面的BeautifulSoup,它有助于我們處理html。我們導(dǎo)入的下一個庫是urllib,它連接到網(wǎng)頁。最后,我們將輸出寫入csv,因此我們還需要導(dǎo)入csv 庫。作為替代方案,可以在此處使用json庫。
# import librariesfrom bs4 import BeautifulSoupimport urllib.requestimport csv
下一步是定義您正在抓取的網(wǎng)址。如上一節(jié)所述,此網(wǎng)頁在一個頁面上顯示所有結(jié)果,因此此處給出了地址欄中的完整url:
# specify the urlurlpage='http://www.fasttrack.co.uk/league-tables/tech-track-100/league-table/'
然后我們建立與網(wǎng)頁的連接,我們可以使用BeautifulSoup解析html,將對象存儲在變量'soup'中:
# query the website and return the html to the variable 'page'page=urllib.request.urlopen(urlpage)# parse the html using beautiful soup and store in variable 'soup'soup=BeautifulSoup(page, 'html.parser')
我們可以在這個階段打印soup變量,它應(yīng)該返回我們請求網(wǎng)頁的完整解析的html。
print(soup)
如果存在錯誤或變量為空,則請求可能不成功。可以使用urllib.error模塊在此時實現(xiàn)錯誤處理。
搜索html元素
由于所有結(jié)果都包含在表中,我們可以使用find 方法搜索表的soup對象。然后我們可以使用find_all 方法查找表中的每一行。
如果我們打印行數(shù),我們應(yīng)該得到101的結(jié)果,100行加上標(biāo)題。
# find results within tabletable=soup.find('table', attrs={'class': 'tableSorter'})results=table.find_all('tr')print('Number of results', len(results))
因此,我們可以對結(jié)果進(jìn)行循環(huán)以收集數(shù)據(jù)。
打印soup對象的前兩行,我們可以看到每行的結(jié)構(gòu)是:
<tr><th>Rank</th><th>Company</th><th class="">Location</th><th>Year end</th><th class="" style="text-align:right;">Annual sales rise over 3 years</th><th class="" style="text-align:right;">Latest sales £000s</th><th class="" style="text-align:right;">Staff</th><th class="">Comment</th><!-- <th>FYE</th>--></tr><tr><td>1</td><td><a ><span>Wonderbly</span></a>Personalised children's books</td><td>East London</td><td>Apr-17</td><td style="text-align:right;">294.27%</td><td style="text-align:right;">*25,860</td><td style="text-align:right;">80</td><td>Has sold nearly 3m customisable children’s books in 200 countries</td><!-- <td>Apr-17</td>--></tr>
表格中有8欄:Rank,Company,Location,Year End,Annual Sales Rise,Latest Sales, Staff and Comments,所有這些都是我們可以保存的感興趣的數(shù)據(jù)。
網(wǎng)頁的所有行的結(jié)構(gòu)都是一致的(對于所有網(wǎng)站來說可能并非總是如此?。?。因此,我們可以再次使用find_all 方法將每一列分配給一個變量,那么我們可以通過搜索<td> 元素來寫入csv或JSON。
循環(huán)遍歷元素并保存變量
在Python中,將結(jié)果附加到一個列表中是很有用的,然后將數(shù)據(jù)寫到一個文件中。我們應(yīng)該在循環(huán)之前聲明列表并設(shè)置csv的頭文件,如下所示:
# create and write headers to a list rows=[]rows.append(['Rank', 'Company Name', 'Webpage', 'Description', 'Location', 'Year end', 'Annual sales rise over 3 years', 'Sales £000s', 'Staff', 'Comments'])print(rows)
這將打印出我們添加到包含標(biāo)題的列表的第一行。
你可能會注意到表格中有一些額外的字段Webpage和Description不是列名,但是如果你仔細(xì)看看我們打印上面的soup變量時的html,那么第二行不僅僅包含公司名稱。我們可以使用一些進(jìn)一步的提取來獲取這些額外信息。
下一步是循環(huán)結(jié)果,處理數(shù)據(jù)并附加到可以寫入csv的rows。
在循環(huán)中查找結(jié)果:
# loop over resultsfor result in results: # find all columns per result data=result.find_all('td') # check that columns have data if len(data)==0: continue
由于表中的第一行僅包含標(biāo)題,因此我們可以跳過此結(jié)果,如上所示。它也不包含任何<td>元素,因此在搜索元素時,不會返回任何內(nèi)容。然后,我們可以通過要求數(shù)據(jù)的長度為非零來檢查是否只處理包含數(shù)據(jù)的結(jié)果。
然后我們可以開始處理數(shù)據(jù)并保存到變量中。
# write columns to variables rank=data[0].getText() company=data[1].getText() location=data[2].getText() yearend=data[3].getText() salesrise=data[4].getText() sales=data[5].getText() staff=data[6].getText() comments=data[7].getText()
以上只是從每個列獲取文本并保存到變量。但是,其中一些數(shù)據(jù)需要進(jìn)一步清理以刪除不需要的字符或提取更多信息。
數(shù)據(jù)清理
如果我們打印出變量company,該文本不僅包含公司名稱,還包含描述。我們?nèi)缓蟠蛴ales,它包含不需要的字符,如腳注符號,最好刪除。
print('Company is', company) # Company is WonderblyPersonalised children's books print('Sales', sales) # Sales *25,860
我們希望將company 分為公司名稱和描述,我們可以用幾行代碼實現(xiàn)。再看一下html,對于這個列,有一個 <span> 元素只包含公司名稱。此列中還有一個鏈接指向網(wǎng)站上的另一個頁面,其中包含有關(guān)該公司的更多詳細(xì)信息。我們將在稍后使用它!
<td><a ><span>Wonderbly</span></a>Personalised children's books</td>
要將company 分成兩個字段,我們可以使用find方法保存<span>元素,然后使用strip 或replace 從company 變量中刪除公司名稱,這樣它只留下描述。
要從sales中刪除不需要的字符,我們可以再次使用strip和replace 方法!
# extract description from the name companyname=data[1].find('span', attrs={'class':'company-name'}).getText() description=company.replace(companyname, '') # remove unwanted characters sales=sales.strip('*').strip('?').replace(',','')
我們要保存的最后一個變量是公司網(wǎng)站。如上所述,第二列包含指向另一個頁面的鏈接,該頁面具有每個公司的概述。 每個公司頁面都有自己的表格,大部分時間都包含公司網(wǎng)站。
檢查公司頁面上的url元素
要從每個表中抓取url并將其保存為變量,我們需要使用與上面相同的步驟:
查看一些公司頁面,如上面的屏幕截圖所示,網(wǎng)址位于表格的最后一行,因此我們可以在最后一行內(nèi)搜索<a>元素。
# go to link and extract company website url=data[1].find('a').get('href') page=urllib.request.urlopen(url) # parse the html soup=BeautifulSoup(page, 'html.parser') # find the last result in the table and get the link try: tableRow=soup.find('table').find_all('tr')[-1] webpage=tableRow.find('a').get('href') except: webpage=None
也有可能出現(xiàn)公司網(wǎng)站未顯示的情況,因此我們可以使用try except條件,以防萬一找不到網(wǎng)址。
一旦我們將所有數(shù)據(jù)保存到變量中,我們可以在循環(huán)中將每個結(jié)果添加到列表rows。
# write each result to rows rows.append([rank, company, webpage, description, location, yearend, salesrise, sales, staff, comments])print(rows)
然后可以試著在循環(huán)外打印變量,在將其寫入文件之前檢查它是否符合您的預(yù)期!
寫入輸出文件
如果想保存此數(shù)據(jù)以進(jìn)行分析,可以用Python從我們列表中非常簡單地實現(xiàn)。
# Create csv and write rows to output filewith open('techtrack100.csv','w', newline='') as f_output: csv_output=csv.writer(f_output) csv_output.writerows(rows)
運行Python腳本時,將生成包含100行結(jié)果的輸出文件,您可以更詳細(xì)地查看這些結(jié)果!
尾語
這是我的第一個教程,如果您有任何問題或意見或者不清楚的地方,請告訴我!
原文標(biāo)題:
Data Science Skills: Web scraping using python
原文鏈接:
https://towardsdatascience.com/data-science-skills-web-scraping-using-python-d1a85ef607ed
譯者簡介
田曉寧,質(zhì)量管理專家,國際認(rèn)證精益六西格瑪黑帶,19年從業(yè)經(jīng)驗;軟件工程專家,擁有CMMI ATM證書,曾主導(dǎo)公司通過CMMI 5級評估;精通ISO9000和ISO27000體系,長期擔(dān)任公司質(zhì)量和信息安全主任審核員,每年審核超過50個項目或部門;擁有PMP證書,擔(dān)任公司項目管理內(nèi)訓(xùn)師,具有項目管理和系統(tǒng)開發(fā)實戰(zhàn)經(jīng)驗。
— 完 —
關(guān)注清華-青島數(shù)據(jù)科學(xué)研究院官方微信公眾平臺“THU數(shù)據(jù)派”及姊妹號“數(shù)據(jù)派THU”獲取更多講座福利及優(yōu)質(zhì)內(nèi)容。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。