手把手教你用selenium爬取某东月饼数据

发表于:2021-9-15 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:stevezhao6    来源:掘金

  实例化一个浏览器对象
  driver = webdriver.Chrome()
  driver.get('https://www.jd.com')
  定义搜索的关键字
  打开浏览器会发现URL的格式。
  搜索功能
  def get_product(key):
      # 定位到搜索框
      driver.find_element_by_css_selector('#key').send_keys(keyword)
      # 定位到搜索按钮
      driver.find_element_by_css_selector('.button').click()
      # 防止超时,等待加载,设置为10S
      driver.implicitly_wait(10)
      # 最大化浏览器效果
  解决图片懒加载
  # 解决懒加载
  def drop_down():
      for x in range(1,11,2):
          time.sleep(0.5)
          # 控制翻页
          j = x / 10
          js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
          driver.execute_script(js)
  解析商品数据
  通过定位发现,商品都有gl-item属性。
  拿到商品集合
  # 解析商品数据
  def parse_product():
      # 拿到商品集合
      lis = driver.find_elements_by_css_selector('.gl-item')
  解析商品名称
  通过定位发现,商品名称在p-name下的em标签中。
  # 解析商品数据
  def parse_product():
      # 拿到商品集合
      lis = driver.find_elements_by_css_selector('.gl-item')
      for li in lis:
        try:
          # 商品名称
          product_name = li.find_element_by_css_selector('div.p-name a em').text
  解析商品价格
  通过定位发现,商品价格在p-price下的i标签中。
  # 解析商品数据
  def parse_product():
      # 拿到商品集合
      lis = driver.find_elements_by_css_selector('.gl-item')
      for li in lis:
        try:
          # 商品名称
          product_name = li.find_element_by_css_selector('div.p-name a em').text
          # 商品价格
          product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
  解析商品评价数量
  通过定位发现,商品价格在p-commit下的a标签中。
  # 解析商品数据
  def parse_product():
      # 拿到商品集合
      lis = driver.find_elements_by_css_selector('.gl-item')
      for li in lis:
        try:
          # 商品名称
          product_name = li.find_element_by_css_selector('div.p-name a em').text
          # 商品价格
          product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
          # 商品评价数量
          product_comment =  li.find_element_by_css_selector('div.p-commit strong a').text
  解析店铺名称
  通过定位发现,商品价格在span下的a标签中。
  # 解析商品数据
  def parse_product():
      # 拿到商品集合
      lis = driver.find_elements_by_css_selector('.gl-item')
      for li in lis:
        try:
          # 商品名称
          product_name = li.find_element_by_css_selector('div.p-name a em').text
          # 商品价格
          product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
          # 商品评价
          product_comment =  li.find_element_by_css_selector('div.p-commit strong a').text
          # 店铺名称
          product_shop_name = li.find_element_by_css_selector('span.J_im_icon a').text
         #打印数据 
         print(product_shop_name,product_price,product_comment,product_shop_name)
  解析数据保存到csv文件
    with open('data_jd.csv',mode='a',encoding='utf-8',newline='') as f:
        csv_write = csv.writer(f)
        csv_write.writerow([product_name,product_price,product_name,product_shop_name])
  except Exception as e:
   print(e)
  总结
  到最后,本期教程完成了爬取京东月饼销售数据的操作,并保存到csv文件,搜索不仅限于月饼,也可用于其他商品。
  PS:本文所爬取的数据无任何敏感数据,此教程仅供学习使用,严谨从事非法活动,法网恢恢疏而不漏。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号