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判断变量是否为Json格式的字符串示例
May 03 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
Python中logging实例讲解
Jan 17 Python
python实现顺时针打印矩阵
Mar 02 Python
我就是这样学习Python中的列表
Jun 02 Python
pytorch 输出中间层特征的实例
Aug 17 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 Python
pytorch显存一直变大的解决方案
Apr 08 Python
Python制作表白爱心合集
Jan 22 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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
python飞机大战游戏实例讲解
2020/12/04 Python
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
高中生学期学习自我评价
2014/02/24 职场文书
合作意向书范本
2014/03/31 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
立春观后感
2015/06/18 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
小学运动会开幕词
2016/03/04 职场文书
创业计划书之酒店
2019/08/30 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis