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 相关文章推荐
基于并发服务器几种实现方法(总结)
Dec 29 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
python 列表删除所有指定元素的方法
Apr 19 Python
Python中Proxypool库的安装与配置
Oct 19 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Python和Sublime整合过程图示
Dec 25 Python
Python 从attribute到property详解
Mar 05 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
python代码区分大小写吗
Jun 17 Python
python try...finally...的实现方法
Nov 25 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 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调用自己java程序的方法详解
2016/05/13 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python实现字典的key和values的交换
2015/08/04 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
WSDL的操作类型主要有几种
2013/07/19 面试题
装饰资料员岗位职责
2013/12/30 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
篮球拉拉队口号
2015/12/25 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers