疫情又又又来了,看我爬取京东6000款口罩,来看看那一款最适合你

疫情期间

个人防护有哪些需要注意的事项?

专家提醒

日常要继续保持良好的

个人卫生防护习惯

坚持防疫的“三件套”和“五还要”

“三件套”:佩戴口罩、保持社交距离、注意个人卫生。

“五还要”:口罩还要戴、社交距离还要留、咳嗽喷嚏还要遮、双手还要经常洗、窗户还要尽量开。


这篇文章主要介绍了python selenium爬取京东6000多款口罩信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Selenium安装

在此之前我们首先要准备好selenium的配置和安装,如下:

selenium可以直接可以用pip安装。

pip install selenium


chromedriver安装

要注意的是chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。

有两个下载地址分别如下:

1、http://chromedriver.storage.googleapis.com/index.html

2、https://npm.taobao.org/mirrors/chromedriver/

当然,你首先需要查看你的Chrome版本,在浏览器中输入

chrome://version 即可查看浏览器版本信息


目标确定

我们今天的任务就是爬取京东口罩


导入所需模块

以下为我们此次爬取jd所需的python库

importrandom

fromseleniumimportwebdriver

fromicecreamimportic

importtime

importcsv


目标网址

我们要获取的jd链接如下,我们要获取的内容包含口罩的标题、价格、评论数量、店铺名称、口罩详情和口罩标签等信息

https://search.jd.com/


打开浏览器并且加载网页内容

执行如下代码之后会自动跳转到我们所要爬取的jd页面

# 驱动加载

driver = webdriver.Chrome()

# 打开网站

driver.get('https://www.jd.com/')

# 等待网页加载完成,不是死等;加载完成即可

driver.implicitly_wait(10)

# 定位输入框并且输入搜索关键字

driver.find_element_by_css_selector('#key').send_keys('口罩')

driver.find_element_by_css_selector('#key').send_keys(Keys.ENTER)

我们要获取评论内容必须要拉到网页最底部才可以完全加载出li标签,这段逻辑我们交由js函数来实现

# 页面滑动函数

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)


获取网页信息

如上分析,所有评论信息都存在网页对应的li标签之中

所以接下来我们的思路就很清晰;进入到ul标签去提取内部我们所需要的信息

# 获取所有的li标签

lis = driver.find_elements_by_css_selector('.gl-item')

print(len(lis))

'''

60

'''


提取网页信息

接下来我们就在li标签中提取我们所需要的信息

咱们再提取的时候如果你会一点点js的话就可以使用id(#),class(.)的方法,

如果你不懂的话直接右键copy xpat或者selector都是可以实现的


# 标题

title = li.find_element_by_css_selector('.p-name em').text.replace('\n','')

# 价格

price = li.find_element_by_css_selector('.p-price strong i').text

# 评论数量

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')

# 店铺标签

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: '爱康尼(AIKANGNI)口罩自营3d立体黑色成人一次性口罩独立包装冬季保暖薄款透气V型显脸小男女款防尘30枚'

price: '27.00'

cmts_num: '1万+'

shop_name: '爱康尼(AIKANGNI)京东自营旗舰店'

details: 'https://item.jd.com/100011649767.html'

icon: '自营,放心购,秒杀,券39-5,满29-3'

ic| title: 'Dr.Chu初医生 医用隔离面罩一次性3D立体黑色白色防护防尘透气男女网红儿童口罩 【成人黑色】M码(50只装)'

price: '34.00'

cmts_num: '10万+'

shop_name: '初医生昂王专卖店'

details: 'https://item.jd.com/10028619571038.html'

icon: '秒杀,免邮,券29-3,每满200-30'

'''


数据保存

数据成功提取接下来我们将数据保存在csv中便于后续可视化展示

# 数据存储

f = open('jd口罩1.csv', mode='a', encoding='utf-8', newline='')

csv_writer = csv.DictWriter(f, fieldnames=[

'标题',

'价格',

'评论数量',

'店铺名称',

'详情',

'标签'

])

# 写入表头

csv_writer.writeheader()

dit = {

'标题': title,

'价格': price,

'评论数量': cmts_num,

'店铺名称': shop_name,

'详情': details,

'标签': icon

}

csv_writer.writerow(dit)

多页获取

我们定个小目标,先获取300页数据

forpageinrange(1,300+1):

print(f'-------------正在抓取第{page}页-------------')

time.sleep(random.random() *3)# 延时防止被反爬

spider_page()

# 点击翻页

driver.find_element_by_css_selector('.pn-next').click()

总共获取了6000条测试数据,如果你有时间和兴趣可以获取更多哈

数据处理

接下来就是对数据去重和去空处理了,然后随机抽取五条数据展示如下:

# 读取数据

rcv_data = pd.read_csv('./jd口罩.csv')

# 删除重复记录

rcv_data = rcv_data.drop_duplicates()

# 删除缺失值

rcv_data = rcv_data.dropna()

# 抽样展示5条数据

print(rcv_data.sample(5))

'''

标题    价格  评论数量              店铺名称                                       详情       标签

87   n95口罩女夏季薄款一次性黑白色男潮款kn95kf94防尘不勒耳3d立体级别 成人款白色【2...  19.9   1万+        德清元医疗器械专营店  https://item.jd.com/10035533519450.html  免邮,2件9折

190  恒助儿童医用外科口罩3层95%过滤熔喷布助力开学小孩4-12岁一次性医用口罩 儿童蓝色/100片装  19.9   2万+           新世家族旗舰店     https://item.jd.com/71225626103.html       免邮

53               劲度 一次性医用外科口罩独立包装灭菌级成人口罩医用防细菌飞沫防护 50只装  38.9  20万+  劲度(JINDU)京东自营旗舰店    https://item.jd.com/100017620290.html       自营

0                        戴思一次性医用口罩透气轻薄成人3层医用口罩50只 独立包装  29.9  50万+  戴思(DAISI)京东自营旗舰店    https://item.jd.com/100009140187.html       自营

142                       超亚哆啦A梦联名款一次性成人医用外科口罩医疗防护三层透气   6.9   5万+         超亚京东自营旗舰店    https://item.jd.com/100016314984.html   自营,放心购

'''


词云展示

标签词云展示图

好了今天的分析到此结束啦,有问题我们评论区见~~

你可能感兴趣的:(疫情又又又来了,看我爬取京东6000款口罩,来看看那一款最适合你)