文章目录

  • 前言
  • 一、使用python爬取网上数据并写入到excel中
    • 例子一:
    • 例子二:
  • 二、工具类
  • 总结

前言

记录一下使用python将网页上的数据写入到excel中


一、使用python爬取网上数据并写入到excel中

要爬取数据的网站:

例子一:

https://ip.cn/yinhang.html (该网页有5个网页数据)

更多工具中查看页面源代码:

找到想要数据的位置

代码中:

例子二:

要爬取数据的网站:
https://www.00cha.com/tel.htm

页面源代码:

代码中:

由于我这边

二、工具类

import datetime
import openpyxl
import requests
from lxml import etreedef get_url_html(url):"""定义一个函数, 新建一个空变量html_str, 请求网页获取网页源码,如果请求成功,则返回结果,如果失败则返回空值url: 入参参数, 指的是我们普通浏览器中的访问网址"""html_str = ""try:"""获取网页请求之后,返回的网页源码,类似于在浏览器中右击选择网页源码, 使用三方库etree把网页源码字符串转换成HTML格式"""r = requests.get(url, timeout=200)# 该操作为使用网页的编码方式,防止数据乱码r.encoding = r.apparent_encodinghtml_str = etree.HTML(r.text)except Exception as e:print(e)return html_str# 获取ipcn网站上的数据
def get_ip_cn_data(html_str):"""定义一个函数, 新建一个变量pdata_list初始值为空列表(也可以叫空数组), 在网页源码中匹配出每一行的内容html_str: 入参参数, 指的是网页源码,HTML格式的"""data_list = []try:"""查找网页源码中的xpath,找到每一行的位置"""option = html_str.xpath('//div[@class="layui-card ip_card"]//div[@class="layui-card-body"]/table/tbody[1]//tr')for op in option:"""根据每一行,匹配出第一列的字符串,比如'2021年10月20日',再通过正则匹配出它的数字部分用'/'隔开,则把字符串转换成2021/10/20"""# col1 = "/".join(re.findall("\d+", op.xpath("./td[1]/text()")[0]))"""根据每一行,匹配出其他4列的数字字符串,然后通过函数转换,将字符串转换成浮点类型, 获取失败则为空值"""try:col1 = str(op.xpath("./td[1]/text()")[0])except:col1 = ""try:col2 = str(op.xpath("./th/text()")[0])except:col2 = ""data_list.append([col2.strip(), col1.strip()])except Exception as e:print(e)return data_list# 获取00cha网页上的数据
def get_00cha_data(html_str):# data_list中的数据为未删除空白行的数据data_list = []# not_null_list中的数据为删除空白行后的数据not_null_list = []try:"""查找网页源码中的xpath,找到每一行的位置"""# 根据网页中的源码,确认表格所在的div等数据option = html_str.xpath('//div[@class="searchnr"]/table//tr')for op in option:"""根据每一行,匹配出第一列的字符串,比如'2021年10月20日',再通过正则匹配出它的数字部分用'/'隔开,则把字符串转换成2021/10/20"""# col1 = "/".join(re.findall("\d+", op.xpath("./td[1]/text()")[0]))"""根据每一行,匹配出其他4列的数字字符串,然后通过函数转换,将字符串转换成浮点类型, 获取失败则为空值"""try:col1 = str(op.xpath("./td[1]/a/text()")[0])except:col1 = ""try:col2 = str(op.xpath("./td[2]/text()")[0])except:col2 = ""try:col3 = str(op.xpath("./td[3]/a/text()")[0])except:col3 = ""try:col4 = str(op.xpath("./td[4]/text()")[0])except:col4 = ""data_list.append([col1.strip(), col2.strip()])data_list.append([col3.strip(), col4.strip()])except Exception as e:print(e)for index, value in enumerate(data_list):if value[1] != '':if value[0] != '':not_null_list.append(value)return not_null_listdef write_excel(file_name, write_list):"""定义一个函数, 将每一行的数据汇总的数组,进行遍历,依次写到excel中file_name: 入参参数, 指的是写入excel的名字write_list: 入参参数, 指的是写入excel的每一行汇总的数组"""full_excel = openpyxl.Workbook()full_sheet = full_excel.activefor i in range(0, len(write_list)):full_sheet.append(write_list[i])full_excel.save(file_name)# 主函数
if __name__ == '__main__':start_time = datetime.datetime.now()"""URL的规律是XXXX+当前日期+XXXX+当前页号"""now_date = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")every_page_result_list = [["pub_phone_number", "pub_phone_desc"]]  # 空数组接受每一页的所有数据行汇总数据compare_result_list = []"""循环每一页获取数据"""# pages = 78pages = 1# 获取urls中的数据for index in range(1, pages+1):urls = {"https://ip.cn/yinhang.html" , "https://ip.cn/gonggong.html" , "https://ip.cn/jiudian.html" , "https://ip.cn/kuaidi.html" , "https://ip.cn/waimai.html"}for url in urls:every_page_result_list = every_page_result_list + get_ip_cn_data(get_url_html(url))url = "https://www.00cha.com/tel.htm"compare_result_list = get_00cha_data(get_url_html(url))# 去除compare_result_list和every_page_result_list中电话相同的数据for index2, value2 in enumerate(compare_result_list):for index3, value3 in enumerate(every_page_result_list):if value2[0] == value3[0]:compare_result_list.pop(index2)every_page_result_list = every_page_result_list + compare_result_list# 将数据写到指定路径下的csv文件中write_excel(r"D:\PubTel"+now_date+".csv", every_page_result_list)end_time = datetime.datetime.now()print(f"耗时总共{(end_time - start_time).seconds}秒")

总结

由于我这边的业务需要去除两个网站中相同的手机号,所以做了一些处理。java程序员第一次接触python,大家可以根据自己的需求修改里面具体的业务逻辑

使用python爬取网站数据并写入到excel中相关推荐

  1. #python学习笔记#使用python爬取网站数据并保存到数据库

    上篇说到如何使用python通过提取网页元素抓取网站数据并导出到excel中,今天就来说说如何通过获取json爬取数据并且保存到mysql数据库中. 本文主要涉及到三个知识点: 1.通过抓包工具获取网 ...

  2. 如何利用python爬取网站数据

    Python是一种非常适合用于网络爬虫的编程语言,以下是Python爬取网站数据的步骤: 1. 确定目标网站和所需数据:首先要找到需要爬取数据的网站,确定你需要爬取的数据是哪一部分. 2. 发送请求: ...

  3. 教你用python爬取网站数据

    编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行 ...

  4. python能爬取网站后台数据_如何利用Python爬取网站数据?

    1.基本方法 其实用python爬取网页很简单,只有简单的几句话 这样就可以获得到页面的内容.接下来再用正则匹配去匹配所需要的内容就行了.但是,真正要做起来,就会有各种各样的细节问题. 2.登录 这是 ...

  5. Python爬取网站数据

    编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行 ...

  6. 和我的清华室友经过20天得出的python爬取网站数据!!!

    编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行 ...

  7. 如何利用Python爬取网站数据?

    1.基本方法 其实用python爬取网页很简单,只有简单的几句话: 这样就可以获得到页面的内容.接下来再用正则匹配去匹配所需要的内容就行了.但是,真正要做起来,就会有各种各样的细节问题. 2.登录 这 ...

  8. python怎么爬取excel_求教! Python爬取的数据 怎么写入Excel表格中

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 自学了一点Python...爬取了基金网的一点数据 ,不知道怎么才能把 爬取的数据写到Excel 中 求指教 import requests import ...

  9. python爬取网站数据(含代码和讲解)

    提示:本次爬取是利用xpath进行,按文章的顺序走就OK的: 文章目录 前言 一.数据采集的准备 1.观察url规律 2.设定爬取位置和路径(xpath) 二.数据采集 1. 建立存放数据的dataf ...

最新文章

  1. 帝国cms调用栏目自定义字段(栏目简介)如何操作
  2. 【KubeVela 官方文档翻译】,欢迎大家踊跃参与
  3. 网狐棋牌(八) 异步引擎 和 网狐棋牌(九) 服务引擎概览
  4. IDEA无法加载log文件
  5. camel java_与Java EE和Camel的轻量级集成
  6. php中id如何与删除关联,ThinkPHP查询语句与关联查询用法实例
  7. java框架mangedv,Spring集成JPA后,报“Not an managed type: class x.x.x
  8. 在ARMSYS(S3C44B0X开发板)上进行uClinux内核移植的总结
  9. 读取XML文件时,总报“前言中不允许有内容”错误-分析
  10. java点击按钮弹出警告_GUI求教~~~我想点击按钮确定后,弹出一个提示框输入有误!,,…...
  11. 【RobotStudio学习笔记】(八)速度设置
  12. Android ImageView(插入图片)属性详解
  13. Java进阶:Mybatis学习
  14. 为什么网易云音乐总能知道你喜欢听什么歌?背后的原理竟然如此简单!
  15. 【Unity3D插件】AnyPortrait插件分享《(一)制作史莱姆动画》
  16. brew 镜像_ps镜像快捷键,ps镜像图片效应功能怎么用?
  17. 登陆远程kvm_通过IPMI kvm控制台远程重装服务器系统
  18. markdown基础语法
  19. 武汉大学计算机学院 夏令营,武汉大学计算机学院2020保研夏令营通知
  20. centos8安装和使用fmmpeg

热门文章

  1. 经济订货批量(EOQ)模型及有计划的延期交货_库存管理基础
  2. 【k哥爬虫普法】程序员183并发爬取官方网站,直接获刑3年?
  3. PyCharm的安装与使用
  4. bilibili缓存视频的位置
  5. 快速有效的从零开始学习3d建模?
  6. 黑盒测试——NextDate函数测试(判定表驱动法)
  7. 一个HashMap对象所占内存的分析
  8. 利用Javascript生成txt文本文件
  9. spark读取excel表格
  10. MATLAB 之 优劣解距离法(TOPSIS )