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备份文件的脚本
Aug 11 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
python使用tornado实现简单爬虫
Jul 28 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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代码
2010/08/08 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
PHP加密解密函数详解
2015/10/28 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
秋收起义观后感
2015/06/11 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS