Python3 使用selenium插件爬取苏宁商家联系电话


Posted in Python onDecember 23, 2019

Selenium简介

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

此处使用了selenium插件 使用的是火狐浏览器 信息存储到csv表格里面

前面详细不多讲如果条件不满足自行百度安装

# -*- coding: utf-8 -*-
"""
Created on Wed Dec 11 20:21:04 2019

@author: Administrator
"""
from selenium import webdriver
import time
import random
import csv
import codecs

#此处为要爬取的页数默认为 50页
yema = 50
#要爬取的网址 此处网址为搜索详细产品出现的产品搜索结果页
#注意苏宁搜索行业词出现的产品页面是不一样的
wangzhi = "https://search.suning.com/%E4%BC%91%E9%97%B2%E9%A3%9F%E5%93%81/"
#codevs 防止中文写入时乱码
f = codecs.open('suning.csv','a',encoding='utf-8')
csv_writer = csv.writer(f)
#谷歌
#browser = webdriver.chrom.webdirver.WebDriver(executable_path="chromedriver")
#火狐
browser1 = webdriver.Firefox(executable_path="geckodriver")

def browser_1(url,browser=browser1):

  #打开网页
  browser.get(url)
  
  return(browser)

browser = browser_1(wangzhi)
#通过class找到元素
#input_guanggao = browser.find_element_by_class_name("close-btn")
#点一下
#input_guanggao.click()
#输入
#input_txt.send_keys("111")
#翻页键
#next_page = browser.find_element_by_class_name("next")
#数据提取
urls = []
nub = 1
for i in range(yema-1):
  print(i)
  #将滚动条拖到底部
  js="var q=document.documentElement.scrollTop=100000"
  browser.execute_script(js)
  time.sleep(random.randint(5,10))
  shops = browser.find_elements_by_class_name("sellPoint")
  for shop in shops:
    #print(shop)
    #print("*"*10)
    url = shop.get_attribute('href')
    vip = "/0000000000/"
    if vip not in url:
      urls.append(url)
      print(i,"--",nub,"--",url)
      nub += 1
  print(i,"页")
  i += 1
  js="var q=document.documentElement.scrollTop=500"
  browser.execute_script(js)
  time.sleep(random.randint(3,5))
  next_page = browser.find_element_by_class_name("next")
  time.sleep(random.randint(3,5))
  next_page.click()
  time.sleep(random.randint(5,8))
print("---"*10)
for ul in urls:
  browser_shop = browser_1(ul)
  #公司名称
  chead_companyName = browser_shop.find_element_by_id("chead_companyName")
  #电话
  chead_telPhone = browser_shop.find_element_by_id("chead_telPhone")
  #地址
  chead_companyAddress = browser_shop.find_element_by_id("chead_companyAddress")
  browser_shop.find_element_by_class_name("storname").click()
  #chead_telPhone.find_element_by_xpath("//*[contains(text(),'13816391436')]").click()
  companyName = chead_companyName.text
  if companyName == "":
    companyName = "null"
  telPhone = chead_telPhone.text
  if telPhone == "":
    telPhone = "null"
  companyAddress = chead_companyAddress.text
  if companyAddress == "":
    companyAddress = "null"
  print(companyName,"==",telPhone,"==",companyAddress)
  csv_writer.writerow([companyName,telPhone,companyAddress])
  #browser_shop.close()
f.close()
print("结束")

总结

以上所述是小编给大家介绍的Python3 使用selenium插件爬取苏宁商家联系电话,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中字典的基本知识初步介绍
May 21 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
详解python之协程gevent模块
Jun 14 Python
Python3安装psycopy2以及遇到问题解决方法
Jul 03 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
Python hashlib加密模块常用方法解析
Dec 18 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
virtualenv介绍及简明教程
Jun 23 Python
kafka监控获取指定topic的消息总量示例
Dec 23 #Python
kafka-python 获取topic lag值方式
Dec 23 #Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 #Python
python pyenv多版本管理工具的使用
Dec 23 #Python
Python测试Kafka集群(pykafka)实例
Dec 23 #Python
Python with语句和过程抽取思想
Dec 23 #Python
python每5分钟从kafka中提取数据的例子
Dec 23 #Python
You might like
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
PHP array 的加法操作代码
2010/07/24 PHP
PHP的5个安全措施小结
2012/07/17 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python实现装饰器、描述符
2018/02/28 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python实现自动解数独小程序
2019/01/21 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
Python 多进程原理及实现
2020/12/21 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
《童趣》教学反思
2014/02/19 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
放飞理想主题班会
2015/08/14 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis