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的Django框架中Manager方法的使用
Jul 21 Python
Python实现线程状态监测简单示例
Mar 28 Python
解决pycharm界面不能显示中文的问题
May 23 Python
Python安装与基本数据类型教程详解
May 29 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
python实现图片横向和纵向拼接
Mar 05 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
Django 用户认证Auth组件的使用
Nov 30 Python
python SOCKET编程基础入门
Feb 27 Python
python基础之爬虫入门
May 10 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构造函数的继承方法
2015/02/09 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
使用正则替换变量
2007/05/05 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python正则表达式的使用
2017/06/12 Python
Python 多线程Threading初学教程
2017/08/22 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Python对wav文件的重采样实例
2020/02/25 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
如何获取某个日期是当月的最后一天
2013/12/05 面试题
后勤工作职责
2013/12/22 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
五四青年节演讲稿
2014/05/26 职场文书
会议接待欢迎标语
2014/10/08 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书