教師節(jié)送什么?Python教你挑選禮物

又到了一年一度的教師節(jié),每次教師節(jié)大家都會煩惱不知道送什么禮物?尤其是對于理工男來說,更是一個讓人頭大的問題。我今天就和大家分享一個用Python爬取淘寶商品信息的項目,希望可以給大家選禮物時提供一個參考。

1.爬取目標(biāo)

本次項目利用selenium抓取淘寶商品信息,用selenium語法來獲取商品信息、價格、購買人數(shù)、圖片、以及店鋪的名字,最后再把獲取的信息儲存在MongoDB中。

2.準(zhǔn)備工作

在開始本次項目前,首先你要確保正確安裝好Chome瀏覽器并配置好對應(yīng)版本的ChromeDriver;另外,還需要正確安裝Python的selenium庫和pymongo庫;最后還要在電腦上安裝好MongoDB。

3.下面給出Windows下安裝selenium、pymongo、MongoDB的方法

selenium:

pipinstallselenium? || pip3installselenium

pymongo:

pipinstallpymongo? || pip3installpymongo

MongoDB:

由于MongoDB現(xiàn)在版本比較多,3.0和4.0安裝方法存在差異,我下載的是3.x版本的,安裝和配置都比較簡單,所以,我也建議大家安裝和使用3.x版本的。

下載鏈接:

https://www.mongodb.com/download-center/community

ChromeDriver下載鏈接:

https://chromedriver.storage.googleapis.com/index.html

這里下載的ChromeDriver版本要和你下載的谷歌瀏覽器的版本相一致,否則程序運行會出現(xiàn)錯誤。下載完后將ChromeDriver.exe放到你Python安裝路徑下的Scripts中即可。

4.提取單頁商品信息

獲取各個元素用到的是selenium語法的

find_element_by_xpath()

括號中需要填入各元素的Xpath路徑。

獲取商品信息

代碼如下:

'info': li.find_element_by_xpath('.//div[@class="row row-2 title"]').text

獲取價格信息

代碼如下:

'price': li.find_element_by_xpath('.//a[@class="J_ClickStat"]').get_attribute('trace-price') +'元'

獲取付款人數(shù)

代碼如下:

'deal': li.find_element_by_xpath('.//div[@class="deal-cnt"]').text

獲取圖片

代碼如下:

'image': li.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src')

獲取店鋪名字

代碼如下:

'name': li.find_element_by_xpath('.//div[@class="shop"]/a/span[2]').text

5.提取多頁商品信息

經(jīng)過上面的分析,只能爬取一頁的商品信息,我們想獲取多頁信息,就需要先定義一個函數(shù),將總頁數(shù)提取出來,代碼如下

#提取總頁數(shù)

defsearch():

driver.find_element_by_id('q').send_keys('python')

driver.find_element_by_class_name("tb-bg").click()

time.sleep(10)

token

= driver.find_element_by_xpath(

'//*[@id="mainsrp-pager"]/div/div/div/div[1]'

).text

token =int(re.compile('\d+').search(token).group(0))

returntoken

6.向下滑動頁面

我們都知道selenium用來抓取動態(tài)渲染的頁面非常有效,我們在抓取頁面信息時,需要模擬人來操作下拉、翻頁等操作。

對于下拉操作,有爬蟲基礎(chǔ)的可能會想到用selenium模擬的操作,但本次項目我們用js語法來模擬下拉,這樣做的好處就是不容易被淘寶的反爬機制識別,代碼如下

defdrop_down():

forxinrange(1,11,2):

time.sleep(0.5)

j = x/10#滑動到的位置

js ='document.documentElement.scrollTop = document.documentElement.scrollHeight * %f'%j

? ? ? ? driver.execute_script(js)

同理,我們也定義一個函數(shù)來模擬翻頁,代碼如下

defnext_page():

? ? token = search()

num =0

whilenum != token -1:

driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword,44*num))

driver.implicitly_wait(10)#隱式等待

num +=1

? ? ? ? drop_down()

? ? ? ? get_product()

翻頁編寫時,需要注意,我在代碼加入了keyword,意思就是可以根據(jù)你自己的需求,爬取不同種類的商品信息。

7.將數(shù)據(jù)保存至MongoDB

defsave_to_mongo(result):

try:

ifdb[MONGO_COLLECTION].insert(result):

print('儲存到MongoDB成功')

exceptException:

print('儲存到MongoDB失敗')

8.結(jié)果展示

總結(jié)

這次用selenium爬取淘寶商品信息,代碼邏輯框架如下

由于我能力有限,暫時只能實現(xiàn)這么多功能,下一步準(zhǔn)備對MongoDB儲存的數(shù)據(jù)進(jìn)行分析,這樣就完成了從數(shù)據(jù)爬取——數(shù)據(jù)儲存——數(shù)據(jù)分析一個完整的過程。如果有感興趣的小伙伴,后臺可以回復(fù)「教師節(jié)」獲取項目源碼。

最后,祝所有的老師們:教師節(jié)快樂!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容