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用模块pytz来转换时区
Aug 19 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
python 非线性规划方式(scipy.optimize.minimize)
Feb 11 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 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之autoload运行机制实例分析
2014/08/28 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
php常用数组函数实例小结
2016/12/29 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
asm.js使用示例代码
2013/11/28 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python+微信接口实现运维报警
2016/08/27 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
python判断链表是否有环的实例代码
2020/01/31 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
材料采购员岗位职责
2013/12/17 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
承兑汇票延期证明
2015/06/23 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript