python爬取网页表格数据并写入到excel

article/2025/5/18 9:16:21

python爬取网页表格数据并写入到excel

获取银行网页中外汇数据:

http://fx.cmbchina.com/Hq/History.aspx?nbr=%e7%be%8e%e5%85%83&startdate=2009-01-01&enddate=2021-10-22&page=1
在这里插入图片描述

代码如下:

import datetime
import reimport 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).texthtml_str = etree.HTML(r)except Exception as e:print(e)return html_strdef get_page_total(html_str):"""定义一个函数, 新建一个变量pages初始值为0, 在网页源码中匹配出总页数的数值,如果匹配成功返回结果,如果失败则返回0html_str: 入参参数, 指的是网页源码,HTML格式的"""pages = 0try:"""查找网页源码中的xpath,找到总页数所在的xptah位置,并获取它的文本,举例子:页/78页,然后通过正则匹配出78这两个数字"""pages_str = html_str.xpath('//div[@class="contentshow"]//div[@class="box"]//div[@class="page"][2]//div[@class="goTextInput"]/text()')pages = re.findall("\d+", pages_str[1])[0]except Exception as e:print(e)return pagesdef get_page_data(html_str):"""定义一个函数, 新建一个变量pdata_list初始值为空列表(也可以叫空数组), 在网页源码中匹配出每一行的内容html_str: 入参参数, 指的是网页源码,HTML格式的"""data_list = []try:"""查找网页源码中的xpath,找到每一行的位置"""option = html_str.xpath('//div[@class="contentshow"]//div[@class="box"]/table/tbody[2]//tr')for op in option:"""根据每一行,匹配出第一列的字符串,比如'2021年10月20日',再通过正则匹配出它的数字部分用'/'隔开,则把字符串转换成2021/10/20"""col1 = "/".join(re.findall("\d+", op.xpath("./td[1]/text()")[0]))"""根据每一行,匹配出其他4列的数字字符串,然后通过函数转换,将字符串转换成浮点类型, 获取失败则为空值"""try:col2 = float(op.xpath("./td[2]/text()")[0])except:col2 = ""try:col3 = float(op.xpath("./td[3]/text()")[0])except:col3 = ""try:col4 = float(op.xpath("./td[4]/text()")[0])except:col4 = ""try:col5 = float(op.xpath("./td[5]/text()")[0])except:col5 = ""data_list.append([col1, col2, col3, col4, col5])except Exception as e:print(e)return data_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")every_page_result_list = []  # 空数组接受每一页的所有数据行汇总数据"""循环每一页获取数据"""# pages = 78pages = 10for index in range(1, pages+1):url = "http://fx.cmbchina.com/Hq/History.aspx?nbr=%e7%be%8e%e5%85%83&startdate=2009-01-01&enddate=" + now_date + "&page=" + index.__str__()every_page_result_list = every_page_result_list + get_page_data(get_url_html(url))print("获取第{0}页成功...".format(index))"""这里是文件excel写入路径,你可以指定任意存在或者不存在的文件"""write_excel(r"D:\test.xlsx", every_page_result_list)end_time = datetime.datetime.now()print(f"耗时总共{(end_time - start_time).seconds}秒")

执行结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/yC5C8pBV.shtml

相关文章

Python 爬取网页标签内数据

1、先看运行效果,左边为运行后的结果,右边为爬取的网页内容 2、先展示代码 import requests from lxml import etree#爬取的网址 url https://sh.fang.anjuke.com/?fromnavigation #请求头 header{"user-agent": "Mozilla/5.0 (Window…

Python爬取网页文本内容

# -*- coding: utf-8 -*- from bs4 import BeautifulSoupdef second_pro(text):last_sen []while 1:last_sen.append(text.split(",")[-1])other_list text.split(",")[:-1]# 特定位置超长,需要处理if len(other_list) 1:last_sen.append(ot…

python爬取网页时,编码出错问题

在使用python进行爬取问题时,容易出现编码错误的情况,如: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xb9’ in position 61513: illegal multibyte sequence 程序代码: headers {"User-Agent":"Mozi…

python爬取网页图片详解

文章目录 什么是爬虫爬取网页图片实现步骤第一步:打开所操作的网站(任意一个网站)第二步:通过python访问这个网站第三步:点击F12查询相关信息第四步:爬取图片,下载到本地第五步:显示…

python爬取网页信息

PythonSpider项目 Python爬虫是用Python编程语言实现的网络爬虫,主要用于网络数据的抓取和处理,相比于其他语言,Python是一门非常适合开发网络爬虫的编程语言,大量内置包,可以轻松实现网络爬虫功能。Python爬虫可以做…

python爬取网页图片

python爬取网页图片 爬取数据一般分为三步: 爬取网页信息解析爬取来的数据保存数据 找到自己想要爬取的网页,找到user-agent 代码实现 首先导入需要用到的包 from bs4 import BeautifulSoup #网页解析,获取数据 import re #正…

走好这六步,python爬虫爬取网页数据手到擒来~

前言: 用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 python爬虫六步走 第一步:安装requ…

css样式优先级详解

很多人在写代码的过程中会出现css样式冲突的情况,那么我们怎样才能应用我们想用的样式,下面就个人经验写了一点总结! 1.权值(浏览器是根据权值来判断使用哪种css样式的,哪种样式权值高就使用哪种样式) ①标…

css样式优先级问题

此片博客为参考博客&#xff0c;更多详情可看:https://www.cnblogs.com/ombre/p/7418667.html 官方表述的CSS样式优先级如下: 通用选择器(*&#xff09;<元素(类型)选择器<类名选择器<属性选择器<伪类选择器<ID选择器<内联样式 其中内联样式只能通过style&…

前端基础-CSS样式的优先级

样式的优先级&#xff08;了解&#xff09; 1.强制优先级&#xff08;important&#xff09; 语法&#xff1a;样式属性:值 !important; 示意图 注意&#xff1a;只针对当前这一条css属性 2.选择器优先级 伪对象选择器>!important>行内样式>id选择器>class选…

HTML——CSS样式优先级

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initia…

关于CSS样式优先级

设定Li 当中的a链接样式的时候&#xff0c;设了几次没成功。考虑跟优先级有关。转载这篇文章&#xff0c;供自己记录学习&#xff0c;与新手们讨论交流 一般情况下&#xff1a; [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class &g…

JavaWeb_CSS(5)_样式优先级

本系列博客汇总在这里&#xff1a;JavaWeb_CSS 汇总 目录 样式优先级示例 样式优先级 由上到下&#xff0c;由外到内。优先级由低到高。 示例 CSS 文件1p {text-align: center;color: red; }CSS 文件2p {text-align: center;color: green; }/*div 表示 p 标签往内一层*/ d…

CSS 样式优先级权重

CSS的样式优先级可分为四大类&#xff1a; 1、&#xff01;important 无论何种引入方式和选择器&#xff0c;优先级都是最高的&#xff1b; 2、行内样式 style"" 行内样式的优先级要高于嵌入和外链&#xff0c;嵌入和外链如果使用的选择器相同就看他们在页面中插…

html中css样式的优先级规则

CSS2.1 中规定了关于 CSS 规则 Specificity&#xff08;特异性&#xff09;的计算方式&#xff0c;用一个四位的数字串&#xff08;注&#xff1a;CSS2 中是用三位&#xff09;来表示&#xff0c;最后以 Specificity 的高低判断 CSS 的优先权。Specificity 具体的计算规则&…

WEB前端--CSS样式优先级

出处&#xff1a; http://xugang.cnblogs.com 样式的优先级 多重样式&#xff08;Multiple Styles&#xff09;&#xff1a;如果外部样式、内部样式和内联样式同时应用于同一个元素&#xff0c;就是使多重样式的情况。 一般情况下&#xff0c;优先级如下&#xff1a; &#…

CSS的样式与优先级

上节我们学习了三种CSS修饰html的三种方式&#xff1a;内部样式-外部样式-行内样式 那他们有没有优先级之分那&#xff1f;是有的&#xff0c;我们可以了解一下他们同时修改样式是怎么样的优先级 首先在书写的格式上我们的书写顺序排序是&#xff1a;行内-外部-内部 一般都要按…

【三】CSS之样式的优先级

【三】CSS之样式的优先级 1 css样式的优先级 css在使用过程中&#xff0c;因为很多的选择符有具有批量查找的特点&#xff0c;所以很容易出现样式污染的问题。样式污染出现的原因是因为css代码编写过程中&#xff0c;因为引入方式、书写先后顺序以及选择符的优先级等问题导致的…

【CSS】样式优先级

找了好多资料&#xff0c;真是什么样的答案都有&#xff0c;所以自己收集整理了一下。 优先级从高到低如下&#xff1a; &#xff01;important行内样式id选择器类选择器属性选择器伪类选择器标签选择器伪元素选择器 参考&#xff1a;CSS 样式优先级 | 菜鸟教程 (runoob.com)…

HTML样式表优先级最低的是,css的样式优先级

前几天做百度的笔试题&#xff0c;第一题就是关于css优先级的&#xff0c;虽然知道一些规则&#xff0c;但碰上把各条规则相互组合就懵逼了&#xff0c;所以还是得来好好总结一下的。 首要原则 就两条&#xff1a; 优先级高的样式覆盖优先级低的样式 同一优先级的样式&#xff…