python3 selenium 抓取网页多个表格数据,并导入execl中

1. 首先我需要抓取数据的网址是:

'https://mtj.baidu.com/data/mobile/device'

2. 打开浏览器,输入网址,是这个页面

3. 我想要抓取,品牌,机型,系统,分辨率,联网右边的表格

4. 使用 pycharm IDE,下载 selenium模块

pip install selenium(请在python安装时勾选pip)

5. 代码如下

  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. from selenium import webdriver
  4. from selenium.webdriver.chrome.options import Options
  5. import time
  6. import openpyxl
  7. import sys
  8. import datetime
  9. import importlib
  10. import xlwt
  11. import xlrd
  12. url = 'https://mtj.baidu.com/data/mobile/device'
  13. def wait(class_name):
  14. for trytimes in range(0, 10):
  15. # noinspection PyBroadException
  16. try:
  17. browser.find_element_by_class_name(class_name).click()
  18. break
  19. except Exception:
  20. time.sleep(0.5)
  21. def waits(class_name):
  22. for trytimes in range(0, 10):
  23. # noinspection PyBroadException
  24. try:
  25. element = browser.find_elements_by_class_name(class_name)
  26. break
  27. except Exception:
  28. time.sleep(10)
  29. return element
  30. def save_data(dict):
  31. fileName = u'百度研究学院移动平台.xls'
  32. # 新建新的Excel文档
  33. wb = xlwt.Workbook(encoding='utf-8')
  34. for d in dict:
  35. sheet = wb.add_sheet(d, cell_overwrite_ok=True)
  36. headlist = [d, '占比']
  37. row = 0
  38. col = 0
  39. for head in headlist:
  40. sheet.write(col, row, head)
  41. row += 1
  42. i = 0
  43. for data in dict[d]:
  44. if (i % 2 == 0):
  45. col += 1
  46. sheet.write(col, i % 2, data)
  47. i += 1
  48. wb.save(fileName)
  49. def wait_refresh():
  50. try:
  51. browser.refresh() # 刷新方法 refresh
  52. print ('test pass: refresh successful')
  53. time.sleep(1)
  54. except Exception as e:
  55. print ('Exception found', format(e))
  56. def get_data():
  57. #保存5个类别的数据,list_button中是class_name
  58. list_button = ['icon-brand','icon-device', 'icon-os', 'icon-screen','icon-network']
  59. #字典保存所有数据
  60. icon_brand = []
  61. icon_device = []
  62. icon_os = []
  63. icon_screen = []
  64. icon_network = []
  65. dict = {'icon-brand':icon_brand, 'icon-device':icon_device, 'icon-os':icon_os , 'icon-screen':icon_screen , 'icon-network':icon_network }
  66. #分别点击5个按钮,保存数据,品牌,机型,系统分辨率,联网
  67. for button in list_button:
  68. print('************',button,'********************')
  69. wait(button)
  70. time.sleep(2)
  71. element_name = browser.find_elements_by_class_name('dtd1')
  72. element_rank = browser.find_elements_by_class_name('dtd3')
  73. name_list = []
  74. rank_list = []
  75. listen = len(element_name)
  76. for name in element_name:
  77. print(element_name)
  78. name_list.append(name.get_attribute('textContent'))
  79. #print(name.get_attribute('textContent'))
  80. for rank in element_rank:
  81. rank_list.append(rank.get_attribute('textContent'))
  82. for i in range(0, listen):
  83. dict[button].append(name_list[i])
  84. dict[button].append(rank_list[i])
  85. print(dict)
  86. return dict
  87. ######################################################################################
  88. #打开浏览器
  89. browser = webdriver.Chrome()
  90. #最大化窗口
  91. browser.maximize_window()
  92. #输入网址
  93. browser.get(url)
  94. #获取数据
  95. dict_data = get_data()
  96. #写入表格
  97. importlib.reload(sys)
  98. save_data(dict_data)

5. 生成的表格形式如下

(0)

相关推荐

  • Python学习——面向对象高级之反射

    反射 hasattr getattr setattr delattr 模块与函数反射 对象魔术方法 __getattr__(self, name) __setattr__(self, name) __ ...

  • 温故而知新--day2

    温故而知新--day2 类 类与对象 类是一个抽象的概念,是指对现实生活中一类具有共同特征的事物的抽象.其实列化后称为对象.类里面由类属性组成,类属性可以分为数据属性和函数属性(函数属性又称为类方法) ...

  • Python魔法方法漫游指南:描述符

    描述符是 Python 语言中一个强大的特性,它隐藏在编程语言的底层,为许多神奇的魔法提供了动力. 如果你认为它只是个花里胡哨.且不太能用到的高级主题,那么本文将帮助你了解为什么描述符是一个非常有意思 ...

  • 元类, pymysql

    元类, pymysql 一.元类 自定义元类 '''1.什么是元类? - 类的类就是type,其实type就是元类2.元类的作用?3.如何创建元类以及使用?'''# # 1.一切皆对象# list1 ...

  • Python爬取淘宝销量数据!这年头数据就是钱啊

    前言 一.基本环境配置 python版本:python 3.8.3 编辑器:anaconda3下的spyder 浏览器版本:Google Chrome 87.0.4280.88 浏览器驱动器:本文通过 ...

  • Python入门,一定要吃透这69个内置函数

    内置函数就是Python预先定义的函数,这些内置函数使用方便,无需导入,直接调用,大大提高使用者的工作效率,也更便于程序的阅读.截止到Python版本3.9.1,Python一共提供了69个内置函数. ...

  • selenium基础:元素定位的8种方法

    元素定位一共有8种方法id唯一的name元素的名称class name元素的类名tag name标签,不推荐,重复率太高link text文本链接partial link text对文本链接的一种补充 ...

  • 使用selenium进行抓取网页的时候,通过 .text() 获取不到文本内容解决办法

    原创 楚岚 python3+selenium 2020/12/14 11:26 阅读数 773 本文被收录于专区 软件测试 进入专区参与更多专题讨论 selenium 获取不了标签文本的解决方法,通过 ...

  • 如何零编程抓取网页数据

    市面上有很多的爬虫软件,如今有很多的爬虫软件,在我尝试之后,我觉得八爪鱼采集器是比较简单的对于我来说, 我给大家操作下 1.首先下载安装 2.安装好后,打开软件,新建任务(填写任务名称 然后下一步) ...

  • Python 抓取网页乱码原因分析

    在用 python2 抓取网页的时候,经常会遇到抓下来的内容显示出来是乱码. 发生这种情况的最大可能性就是编码问题:运行环境的字符编码和网页的字符编码不一致. 比如,在 windows 的控制台(gb ...

  • 集算器 SPL 抓取网页数据

    网站上的数据源是我们进行统计分析的重要信息源.当我们浏览网页,看到自己感兴趣数据内容时,希望能够快速抓取网页上的数据,这对于数据分析相关工作来说极其重要,也是必备的技能之一.但是网络数据抓取大多需要复 ...

  • 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  • 如何利用Matlab抓取网页数据

    %朋友需要做金融方面的分析,要求从网站上下载大量的数据,一个一个复制粘贴太费事.我写了一个简单的网络爬虫,主要用到正则表达式,可以自动下载网页源文件里面的数据. clc; clear; warning ...

  • 如何让Python爬虫一天抓取100万张网页,爬虫抓取网页数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王平 源自:猿人学Python PS:如有需要Python学习资料的 ...

  • 怎么抓取网页数据 爬虫技术可以爬取什么数据?

    简而言之,爬虫是一种探测机器.它的基本操作是模拟人类行为,在各种网站上漫步,点击按钮,查看数据,或者背诵你看到的信息.就像一只不知疲倦地在建筑物周围爬行的虫子. 因此,爬虫系统有两个功能: 爬虫数据. ...

  • 如何利用Excel批量爬取网页上不规范的数据?

    Hello~我是运营菌. 快过年了,有空可以多陪陪家人和孩子.如果有空无聊时,推荐去看看电影.这里给大家推荐的是豆瓣电影TOP250,每一部都是经典,值得再去回顾.这里就叫大家如何把这样的电影列表爬取 ...