教师节送什么?Python教你挑选礼物
创始人
2025-03-18 00:10:25
0次

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

[[276394]]

1.爬取目标

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

2.准备工作

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

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

selenium:

 

  1. pip install selenium   || pip3 install selenium 

pymongo:

 

  1. pip install pymongo || pip3 install pymongo 

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语法的

 

  1. find_element_by_xpath() 

括号中需要填入各元素的Xpath路径。

  • 获取商品信息

 

代码如下:

 

  1. 'info' : li.find_element_by_xpath('.//div[@class="row row-2 title"]').text 
  • 获取价格信息

 

代码如下:

 

  1. 'price' : li.find_element_by_xpath('.//a[@class="J_ClickStat"]').get_attribute('trace-price') + '元' 
  • 获取付款人数

 

代码如下:

 

  1. 'deal' : li.find_element_by_xpath('.//div[@class="deal-cnt"]').text 
  • 获取图片

 

 

代码如下:

 

  1. 'image' : li.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src') 
  • 获取店铺名字

 

代码如下:

 

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

5.提取多页商品信息

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

 

  1. #提取总页数 
  2. def search(): 
  3.     driver.find_element_by_id('q').send_keys('python') 
  4.     driver.find_element_by_class_name("tb-bg").click() 
  5.     time.sleep(10) 
  6.     token 
  7. = driver.find_element_by_xpath( 
  8. '//*[@id="mainsrp-pager"]/div/div/div/div[1]' 
  9. ).text 
  10.     token = int(re.compile('\d+').search(token).group(0)) 
  11.     return token 

6.向下滑动页面

我们都知道selenium用来抓取动态渲染的页面非常有效,我们在抓取页面信息时,需要模拟人来操作下拉、翻页等操作。

对于下拉操作,有爬虫基础的可能会想到用selenium模拟的操作,但本次项目我们用js语法来模拟下拉,这样做的好处就是不容易被淘宝的反爬机制识别,代码如下

 

  1. def drop_down(): 
  2.     for x in range(1,11,2): 
  3.         time.sleep(0.5) 
  4.         j = x/10           #滑动到的位置 
  5.         js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' %j 
  6.         driver.execute_script(js) 

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

 

  1. def next_page(): 
  2.     token = search() 
  3.     num = 0 
  4.     while num != token - 1: 
  5.         driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword,44*num)) 
  6.         driver.implicitly_wait(10)  #隐式等待 
  7.         num += 1 
  8.         drop_down() 
  9.         get_product() 

翻页编写时,需要注意,我在代码加入了keyword,意思就是可以根据你自己的需求,爬取不同种类的商品信息。

7.将数据保存至MongoDB

 

  1. def save_to_mongo(result): 
  2.     try: 
  3.         if db[MONGO_COLLECTION].insert(result): 
  4.             print('储存到MongoDB成功') 
  5.     except  Exception: 
  6.         print('储存到MongoDB失败') 

8.结果展示

 

总结

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

 

由于我能力有限,暂时只能实现这么多功能,下一步准备对MongoDB储存的数据进行分析,这样就完成了从数据爬取——数据储存——数据分析一个完整的过程。

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

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...