从网上找的程序,稍加修改,实现在JD商城上爬取商品保质期的功能。
具体步骤如下:
一、准备工作
1)PC下载谷歌浏览器;
2)PC下载配置Selenium工具
具体可以参考 Python 爬虫实战 — 抓取JD商品数据
**Selenium工具为 Web 应用程序的测试工具,能够操控浏览器完成一系列步骤,模拟人为操作;**比如自动填写文本,网页端查询快递单号 都是没问题的,目前支持 Java、Python、C#、Ruby 等多种语言。
二、伪代码
1)逐行读EXCL文件,获取关键词;
2)基于关键词在JD上搜索商品;
3)找到第1个商品,对比其title与关键词的匹配程度;
4)满足匹配度阈值,打开该商品详情页;
5)解析网页,检索“保质期”关键字后的字符串;
6)为提高写文件效率,每20次上述操作后,将检索到的保质期写入EXCL文件。

补充:
1)本人python小白,下面代码仅供参考。

#! /usr/bin/python
# coding='utf-8'
"""
获取XX商城商品信息爬虫
Author: zhouzying
URL: https://www.zhouzying.cn
Date: 2018-10-15
"""
from bs4 import BeautifulSoup
import time
from selenium import webdriver
import re
# import xlrd
# import xlwt
# from xlutils.copy import copy
import openpyxl
from openpyxl import Workbook
from openpyxl.reader.excel import load_workbookimport os
import time# 获取网页源代码
# def main():# product = input("请输入商品名称:")filepath = "record.txt"wb = load_workbook('goods.xlsx')# 获取所有表格(worksheet)的名字sheets = wb.get_sheet_names()# print(sheets)# # 第一个表格的名称sheet_first = sheets[0]# # 获取特定的worksheetws = wb.get_sheet_by_name(sheet_first)# 打开浏览器driver = webdriver.Chrome()succesNum=0allProcessNum=0# 通过坐标读取值for i in range(36599):i=i+920   #中断程序重启时,记得修改此处!!print('excl第', i, '行')product=ws.cell(row=i+1, column=3).valueif product !='品名':# 打印商品名print("excl商品名称:", product)# 页数控制index = 1# 设总页数total的初值为100total_2 = 1while index <= total_2:try:page = index * 2 - 1# 关键字中如果有中文字符,URL中需加入“&enc=utf-8”字符编码url = 'https://search.jd.com/Search?keyword=' + str(product) + "&enc=utf-8" + "&page=" + str(page)driver.get(url)# 执行页面向下滑至底部的动作# driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")# 停顿3秒等待页面加载完毕!!!(必须留有页面加载的时间,否则获得的源代码会不完整。)#time.sleep(1)html = driver.page_source# 找到第一个商品的链接urlNew = parser(html, product)# 跳转至商品详情页,获取保质期driver.get(urlNew)# driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")#time.sleep(1)html = driver.page_sourceshelfDataStr=parser2(html)print('找到保质期:'+shelfDataStr)# 保质期写入表格ws.cell(row=i+1, column=5).value = shelfDataStrindex += 1succesNum +=1print("保质期获取完成!".format(product))except:index += 1print("保质期获取失败!".format(product))allProcessNum +=1print('累计处理:成功找到保质期/所有搜索数量=', succesNum,'/',allProcessNum)print('------------------------------------------------------------------------')if i%20==0:print('**写文件**')wb.save(filename='goods.xlsx')print('------------------------------------------------------------------------')# 退出浏览器driver.quit()# wb.save(filename='goods.xlsx')# 提取第一个商品的URL
def parser(html, product):#soup = BeautifulSoup(html, 'html5lib')  #lzy changedsoup = BeautifulSoup(html)    #lzy changed# print(soup)# 定位到包含这些商品信息的代码#items = soup.find_all('div', 'gl-i-wrap')item = soup.find('div', 'gl-i-wrap')strTemp = item.find('div', 'p-name')titleInMall=item.find('div','p-name').a.em.textprint('商城第1个商品名称: ', titleInMall)findInNum=0for itemChar in  product:if itemChar in titleInMall:findInNum=findInNum+1# print(itemChar,'is in',titleInMall)lenTemp=len(product)print('重合度 ',findInNum/lenTemp)urlNew=' 'if (findInNum/lenTemp)>0.95:urlNew = 'https:'+strTemp.find('a')['href']print('重合度大于阈值0.95,打开第1个商品URL:'+urlNew)else:print('重合度小于阈值0.95,该商品未找到保质期!')return urlNew# 提取商品详情页里的保质期信息
def parser2(html):soup = BeautifulSoup(html)    #lzy changed# (soup)clearfix= soup.find_all('dl', 'clearfix')shelfDataStr=''for item in clearfix:shelfDataStrTemp= item.text# print(shelfDataStrTemp)if '保质期' in shelfDataStrTemp:shelfDataStr=shelfDataStrTemp[4:]breakreturn shelfDataStrif __name__ == '__main__':main()

python爬虫 爬取JD商城快消品的保质期相关推荐

  1. 利用python爬虫爬取京东商城商品图片

    笔者曾经用python第三方库requests来爬取京东商城的商品页内容,经过解析之后发现只爬到了商品页一半的图片.(这篇文章我们以爬取智能手机图片为例) 当鼠标没有向下滑时,此时查看源代码的话,就会 ...

  2. Python爬虫-爬取快看漫画网图片并拼接成漫画长图

    Python爬虫-爬取快看漫画网图片并拼接成漫画长图 1.爬取图片 2.拼接图片 1.爬取图片 import os import requests from bs4 import BeautifulS ...

  3. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  4. 四小时学python爬虫爬取信息系列(第一天)

    四小时学python爬虫爬取信息系列(第一天)(全是干货) 1.安装requests库(可以在电脑python,我是进入anaconda我建的虚拟环境) anaconda虚拟环境法流程: conda ...

  5. Python爬虫爬取纵横中文网小说

    Python爬虫爬取纵横中文网小说 学了一周的爬虫,搞了这个东西,自己感觉还不错,有什么问题可以提一提哈 目标:纵横中文网-完本-免费小说 网址:http://book.zongheng.com/st ...

  6. Python爬虫爬取网页数据并存储(一)

    Python爬虫爬取网页数据并存储(一) 环境搭建 爬虫基本原理 urllib库使用 requests库使用 正则表达式 一个示例 环境搭建 1.需要事先安装anaconda(或Python3.7)和 ...

  7. 在当当买了python怎么下载源代码-python爬虫爬取当当网

    [实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...

  8. python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例

    这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬 ...

  9. python爬虫数据分析可以做什么-python爬虫爬取的数据可以做什么

    在Python中连接到多播服务器问题,怎么解决你把redirect关闭就可以了.在send时,加上参数allow_redirects=False 通常每个浏览器都会设置redirect的次数.如果re ...

最新文章

  1. IBASE Header change - access sequence
  2. 并发场景下MySQL存在的问题及解决思路
  3. Java中的XSL转换:一种简单的方法
  4. 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
  5. 【LeetCode笔记】33. 搜索螺旋排序数组(Java、二分)
  6. 表单下拉框、表单修饰符(.lazy、.number、.trim)
  7. vue 列表更改排序,不刷新问题
  8. PAT (Basic Level) Practice (中文)1022 D进制的A+B (20 分)
  9. 想了解Xtrabackup备份原理和常见问题分析,看这篇就够了
  10. CMake编译protobuf
  11. c语言c99标准_C语言的三套标准:C89、C99和C11
  12. Activiti学习笔记(六)Activiti的流程引擎API和服务
  13. 斐讯N1纯净精简/夏杰语音/支持投屏-线刷固件及教程202208
  14. java静态变量、静态方法、代码块、main方法
  15. 切换windows系统版本
  16. Fabric链码实战(二)公民身份信息
  17. c语言程序设计数字电位器,X9C103数字电位器中文.pdf
  18. 不对齐 谷歌浏览器_CHROME谷歌浏览器中文两端对齐
  19. 一张照片,AI生成抽象画(CLIPasso项目安装使用) | 机器学习
  20. 考研[*高数*]学习笔记汇总(全)

热门文章

  1. 区块链是什么?区块链能做什么?区块链学习路线分享
  2. 网站首页被K的原因及其恢复方法
  3. html5 canvas烂漫的空中散落的花瓣动画特效
  4. MYSQL_精讲数据库数据类型
  5. docker-部署lnmp
  6. k-nearest neighbor,k近邻法
  7. Linux signal那些事儿【转】
  8. Pebble/RocksDB SST 文件详解
  9. 离散数学-数理逻辑-命题逻辑的基本概念(1)
  10. 直播api接口java_基于JAVA的电视台直播节目时间表api调用代码实例