教师节送什么?Python教你挑选礼物

又到了一年一度的教师节,每次教师节大家都会烦恼不知道送什么礼物?尤其是对于理工男来说,更是一个让人头大的问题。我今天就和大家分享一个用Python爬取淘宝商品信息的项目,希望可以给大家选礼物时提供一个参考。

1.爬取目标

本次项目利用selenium抓取淘宝商品信息,用selenium语法来获取商品信息、价格、购买人数、图片、以及店铺的名字,最后再把获取的信息储存在MongoDB中。

2.准备工作

在开始本次项目前,首先你要确保正确安装好Chome浏览器并配置好对应版本的ChromeDriver;另外,还需要正确安装Python的selenium库和pymongo库;最后还要在电脑上安装好MongoDB。

3.下面给出Windows下安装selenium、pymongo、MongoDB的方法

selenium:

pipinstallselenium  || pip3installselenium

pymongo:

pipinstallpymongo  || pip3installpymongo

MongoDB:

由于MongoDB现在版本比较多,3.0和4.0安装方法存在差异,我下载的是3.x版本的,安装和配置都比较简单,所以,我也建议大家安装和使用3.x版本的。

下载链接:

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

ChromeDriver下载链接:

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

这里下载的ChromeDriver版本要和你下载的谷歌浏览器的版本相一致,否则程序运行会出现错误。下载完后将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') +'元'

获取付款人数

代码如下:

'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.提取多页商品信息

经过上面的分析,只能爬取一页的商品信息,我们想获取多页信息,就需要先定义一个函数,将总页数提取出来,代码如下

#提取总页数

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用来抓取动态渲染的页面非常有效,我们在抓取页面信息时,需要模拟人来操作下拉、翻页等操作。

对于下拉操作,有爬虫基础的可能会想到用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)

同理,我们也定义一个函数来模拟翻页,代码如下

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,意思就是可以根据你自己的需求,爬取不同种类的商品信息。

7.将数据保存至MongoDB

defsave_to_mongo(result):

try:

ifdb[MONGO_COLLECTION].insert(result):

print('储存到MongoDB成功')

exceptException:

print('储存到MongoDB失败')

8.结果展示

总结

这次用selenium爬取淘宝商品信息,代码逻辑框架如下

由于我能力有限,暂时只能实现这么多功能,下一步准备对MongoDB储存的数据进行分析,这样就完成了从数据爬取——数据储存——数据分析一个完整的过程。如果有感兴趣的小伙伴,后台可以回复「教师节」获取项目源码。

最后,祝所有的老师们:教师节快乐!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容