疫情期間
個(gè)人防護(hù)有哪些需要注意的事項(xiàng)?
專家提醒
日常要繼續(xù)保持良好的
個(gè)人衛(wèi)生防護(hù)習(xí)慣
堅(jiān)持防疫的“三件套”和“五還要”
“三件套”:佩戴口罩、保持社交距離劈猿、注意個(gè)人衛(wèi)生拙吉。
“五還要”:口罩還要戴、社交距離還要留揪荣、咳嗽噴嚏還要遮筷黔、雙手還要經(jīng)常洗、窗戶還要盡量開(kāi)仗颈。
這篇文章主要介紹了python selenium爬取京東6000多款口罩信息佛舱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值挨决,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
Selenium安裝
在此之前我們首先要準(zhǔn)備好selenium的配置和安裝请祖,如下:
selenium可以直接可以用pip安裝。
pip?install?selenium
chromedriver安裝
要注意的是chromedriver的版本一定要與Chrome的版本一致脖祈,不然就不起作用肆捕。
有兩個(gè)下載地址分別如下:
1、http://chromedriver.storage.googleapis.com/index.html
2盖高、https://npm.taobao.org/mirrors/chromedriver/
當(dāng)然慎陵,你首先需要查看你的Chrome版本,在瀏覽器中輸入
chrome://version?即可查看瀏覽器版本信息
目標(biāo)確定
我們今天的任務(wù)就是爬取京東口罩
導(dǎo)入所需模塊
以下為我們此次爬取jd所需的python庫(kù)
importrandom
fromseleniumimportwebdriver
fromicecreamimportic
importtime
importcsv
目標(biāo)網(wǎng)址
我們要獲取的jd鏈接如下喻奥,我們要獲取的內(nèi)容包含口罩的標(biāo)題席纽、價(jià)格、評(píng)論數(shù)量撞蚕、店鋪名稱润梯、口罩詳情和口罩標(biāo)簽等信息
https://search.jd.com/
打開(kāi)瀏覽器并且加載網(wǎng)頁(yè)內(nèi)容
執(zhí)行如下代碼之后會(huì)自動(dòng)跳轉(zhuǎn)到我們所要爬取的jd頁(yè)面
#?驅(qū)動(dòng)加載
driver?=?webdriver.Chrome()
#?打開(kāi)網(wǎng)站
driver.get('https://www.jd.com/')
#?等待網(wǎng)頁(yè)加載完成,不是死等诈豌;加載完成即可
driver.implicitly_wait(10)
#?定位輸入框并且輸入搜索關(guān)鍵字
driver.find_element_by_css_selector('#key').send_keys('口罩')
driver.find_element_by_css_selector('#key').send_keys(Keys.ENTER)
我們要獲取評(píng)論內(nèi)容必須要拉到網(wǎng)頁(yè)最底部才可以完全加載出li標(biāo)簽仆救,這段邏輯我們交由js函數(shù)來(lái)實(shí)現(xiàn)
#?頁(yè)面滑動(dòng)函數(shù)
defdrop_down():
forpageinrange(1,12,2):
time.sleep(1)
j?=?page/9
js?='document.documentElement.scrollTop?=?document.documentElement.scrollHeight?*?%f'%j
driver.execute_script(js)
driver.find_element_by_css_selector('#key').send_keys(Keys.ENTER)
獲取網(wǎng)頁(yè)信息
如上分析,所有評(píng)論信息都存在網(wǎng)頁(yè)對(duì)應(yīng)的li標(biāo)簽之中
所以接下來(lái)我們的思路就很清晰矫渔;進(jìn)入到ul標(biāo)簽去提取內(nèi)部我們所需要的信息
#?獲取所有的li標(biāo)簽
lis?=?driver.find_elements_by_css_selector('.gl-item')
print(len(lis))
'''
60
'''
提取網(wǎng)頁(yè)信息
接下來(lái)我們就在li標(biāo)簽中提取我們所需要的信息
咱們?cè)偬崛〉臅r(shí)候如果你會(huì)一點(diǎn)點(diǎn)js的話就可以使用id(#)彤蔽,class(.)的方法,
如果你不懂的話直接右鍵copy xpat或者selector都是可以實(shí)現(xiàn)的
#?標(biāo)題
title?=?li.find_element_by_css_selector('.p-name?em').text.replace('\n','')
#?價(jià)格
price?=?li.find_element_by_css_selector('.p-price?strong?i').text
#?評(píng)論數(shù)量
cmts_num?=?li.find_element_by_css_selector('.p-commit?strong?a').text
#店鋪名稱
shop_name?=?li.find_element_by_css_selector('.p-shop?span a').text
#口罩詳情
details?=?li.find_element_by_css_selector('.p-img?a').get_attribute('href')
#?店鋪標(biāo)簽
icons?=?li.find_elements_by_css_selector('.p-icons?i')
icon?=','.join([x.textforxinicons])
ic(title,?price,?cmts_num,?shop_name,?details,?icon)
'''
ic|?title:?'愛(ài)康尼(AIKANGNI)口罩自營(yíng)3d立體黑色成人一次性口罩獨(dú)立包裝冬季保暖薄款透氣V型顯臉小男女款防塵30枚'
price:?'27.00'
cmts_num:?'1萬(wàn)+'
shop_name:?'愛(ài)康尼(AIKANGNI)京東自營(yíng)旗艦店'
details:?'https://item.jd.com/100011649767.html'
icon:?'自營(yíng),放心購(gòu),秒殺,券39-5,滿29-3'
ic|?title:?'Dr.Chu初醫(yī)生?醫(yī)用隔離面罩一次性3D立體黑色白色防護(hù)防塵透氣男女網(wǎng)紅兒童口罩?【成人黑色】M碼(50只裝)'
price:?'34.00'
cmts_num:?'10萬(wàn)+'
shop_name:?'初醫(yī)生昂王專賣店'
details:?'https://item.jd.com/10028619571038.html'
icon:?'秒殺,免郵,券29-3,每滿200-30'
'''
數(shù)據(jù)保存
數(shù)據(jù)成功提取接下來(lái)我們將數(shù)據(jù)保存在csv中便于后續(xù)可視化展示
#?數(shù)據(jù)存儲(chǔ)
f?=?open('jd口罩1.csv',?mode='a',?encoding='utf-8',?newline='')
csv_writer?=?csv.DictWriter(f,?fieldnames=[
'標(biāo)題',
'價(jià)格',
'評(píng)論數(shù)量',
'店鋪名稱',
'詳情',
'標(biāo)簽'
])
#?寫入表頭
csv_writer.writeheader()
dit?=?{
'標(biāo)題':?title,
'價(jià)格':?price,
'評(píng)論數(shù)量':?cmts_num,
'店鋪名稱':?shop_name,
'詳情':?details,
'標(biāo)簽':?icon
}
csv_writer.writerow(dit)
多頁(yè)獲取
我們定個(gè)小目標(biāo)庙洼,先獲取300頁(yè)數(shù)據(jù)
forpageinrange(1,300+1):
print(f'-------------正在抓取第{page}頁(yè)-------------')
time.sleep(random.random()?*3)#?延時(shí)防止被反爬
spider_page()
#?點(diǎn)擊翻頁(yè)
driver.find_element_by_css_selector('.pn-next').click()
總共獲取了6000條測(cè)試數(shù)據(jù)顿痪,如果你有時(shí)間和興趣可以獲取更多哈
數(shù)據(jù)處理
接下來(lái)就是對(duì)數(shù)據(jù)去重和去空處理了,然后隨機(jī)抽取五條數(shù)據(jù)展示如下:
#?讀取數(shù)據(jù)
rcv_data?=?pd.read_csv('./jd口罩.csv')
#?刪除重復(fù)記錄
rcv_data?=?rcv_data.drop_duplicates()
#?刪除缺失值
rcv_data?=?rcv_data.dropna()
#?抽樣展示5條數(shù)據(jù)
print(rcv_data.sample(5))
'''
標(biāo)題????價(jià)格??評(píng)論數(shù)量??????????????店鋪名稱???????????????????????????????????????詳情???????標(biāo)簽
87???n95口罩女夏季薄款一次性黑白色男潮款kn95kf94防塵不勒耳3d立體級(jí)別?成人款白色【2...??19.9???1萬(wàn)+????????德清元醫(yī)療器械專營(yíng)店??https://item.jd.com/10035533519450.html??免郵,2件9折
190??恒助兒童醫(yī)用外科口罩3層95%過(guò)濾熔噴布助力開(kāi)學(xué)小孩4-12歲一次性醫(yī)用口罩?兒童藍(lán)色/100片裝??19.9???2萬(wàn)+???????????新世家族旗艦店?????https://item.jd.com/71225626103.html???????免郵
53???????????????勁度?一次性醫(yī)用外科口罩獨(dú)立包裝滅菌級(jí)成人口罩醫(yī)用防細(xì)菌飛沫防護(hù)?50只裝??38.9??20萬(wàn)+??勁度(JINDU)京東自營(yíng)旗艦店????https://item.jd.com/100017620290.html???????自營(yíng)
0????????????????????????戴思一次性醫(yī)用口罩透氣輕薄成人3層醫(yī)用口罩50只?獨(dú)立包裝??29.9??50萬(wàn)+??戴思(DAISI)京東自營(yíng)旗艦店????https://item.jd.com/100009140187.html???????自營(yíng)
142???????????????????????超亞哆啦A夢(mèng)聯(lián)名款一次性成人醫(yī)用外科口罩醫(yī)療防護(hù)三層透氣???6.9???5萬(wàn)+?????????超亞京東自營(yíng)旗艦店????https://item.jd.com/100016314984.html???自營(yíng),放心購(gòu)
'''
詞云展示
標(biāo)簽詞云展示圖
好了今天的分析到此結(jié)束啦镊辕,有問(wèn)題我們?cè)u(píng)論區(qū)見(jiàn)~~