python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析

标签:pattern   div   mat   txt   保存   关于   json   result   with open

关于正则表达式的更多用法,可参考链接:https://blog.csdn.net/weixin_40040404/article/details/81027081

一、正则表达式:

1.常用正则匹配:

URL:^https?://[a-zA-Z0-9.?=&]*$ (re.S模式,匹配 https://www.baidu.com 类似URL )

常用Email地址:[0-9a-zA-Z_-] @[0-9a-zA-Z_-] .[0-9a-zA-Z_-] 或者 [w-] @[w-] .[w-]

中文字符匹配:[u4e00-u9fa5] 或者 [^x00-xff]

QQ号:[1-9][0-9]{4,} ({4,}表示[0-9]的数字个数不低于4个)

ID:^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$

2.特殊组合:

([sS]*?) == ([.n]*?) == re.findall(‘.*?‘, re.S)

万能正则表达式 (加‘?’表示懒惰模式,尽可能最小长度匹配; 不加‘?’表示贪婪模式,尽可能最大长度匹配)

sS : 空白字符 非空白字符,即表示所有字符 all, == ’ .n ‘(.表示除换行符之外的任意字符,n表示换行符)

re.S: 即DOTAALL 点匹配任意模式,改变.的行为,可以匹配换行符

二、例子

获取博客园的其中一篇文章的内容,保存至文档中。(具体解析在代码注释中可见)

1.源代码

1 importrequests2 importre3 importjson4

5 defrequest_blog(url):6 #异常处理代码块

7 try:8 #同步请求

9 response =requests.get(url)10 if response.status_code == 200:11 returnresponse.text12 exceptrequests.RequestException:13 returnNone14

15 defparse_result(html):16 #re正则表达式,re.compile是对匹配符的封装,直接用re.match(匹配符,要匹配的原文本)可以达到相同的效果,

17 #当然,这里没有用re.match来执行匹配,而是用了re.findall,这是因为后者可以适用于多行文本的匹配。

18 #另外,re.compile后面的第2个参数,re.S是用来应对换行的,.匹配的单个字符不包括n和r,当遇到换行时,我们需要用到re.S

19

20 #获取网页中的

标签中的内容,遇到换行符时,自动跳出循环

21 #格式:标签加.*?,.*?表示取标签中的所有数据

22 pattern = re.compile(‘

.*?

‘,re.S)23 items =re.findall(pattern, html)24 returnitems25

26 defwrite_item_to_file(item):27 print(‘写入数据:‘ str(item))28 #保存的文件名blog.txt,写入文件的格式a追加,写入文件的中文格式化UTF-8

29 with open(‘blog.txt‘, ‘a‘, encoding=‘UTF-8‘) as f:30 #遇到换行符时,自动换行

31 f.write(json.dumps(item, ensure_ascii=False) ‘n‘)32

33 defmain(page):34 #网址

35 url = ‘https://www.cnblogs.com/chenting123456789/p/11840740.html‘ str(page)36 #调用获取网页数据的函数

37 html =request_blog(url)38 #调用解析已获取的网页数据的函数

39 items =parse_result(html)40 #循环写入文件

41 for item initems:42 write_item_to_file(item)43

44 if __name__ == "__main__":45 for i in range(1,5):46 main(i)

2.运行结果

018902b9f1398f0ad49a396fc9a7f293.png

3.原文文章截图

daecc5491218bfea42c83bf4e265642d.png

4.写入文件内容

3125a140b1e0d091b9e4a498c27ee53d.png

三、小结

强化爬虫爬取网页信息的技术,以及解析数据时的逻辑顺序。

python爬虫——数据爬取和具体解析

标签:pattern   div   mat   txt   保存   关于   json   result   with open

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Notification的学习,4.0前后的差别,和在设置声音的时候获取资源的uri方法

android 4.0 前后很多api都有了较大的差别,不多说现在学习下notification前后实现的差别,本文参考了 :http://my.oschina.net/ososchina/blog/353692;http://gundumw100.iteye.com/blog/1873318; http://blog.csdn.net…

标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

蓝桥杯日期问题常考,java提供了日期类很方便;//日历类Calendar c Calendar.getInstance();  // 获取实例化对象Date date c.getTime();   // 日期类得到c的时间;SimpleDateFormat sdf new SimpleDateFormat("yyyy-mm-dd hh:mm:s…

前端学习(1598):ref转发

第一种方式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src&…

PHP opencv Dlib,Face_Recognition

Face_Recognition使用Opencv和Dlib实现基于视频的人脸识别文件夹介绍1、Resources\pictures此文件夹下存放人脸保存结果2、Resources\video此文件夹下存放带标注视频保存结果3、Resources\faceS此文件夹下存放各个人物的图片&#xff0c;用于人脸库的建立4、Resources\featureD…

linux c截断文件

http://www.cnblogs.com/zhuxiongfeng/archive/2010/08/24/1807505.html转载于:https://www.cnblogs.com/jingzhishen/p/4745978.html

oracle dbra,资源供给:IO子系统之二

案例描述&#xff1a;某运营商的dbra备份系统&#xff0c;备份构建在vxvm和vxfs文件系统之上&#xff0c;串行更新的速度基本理想。由于无法达到更新目标&#xff0c;通过增加并行来增加IO写速度&#xff0c;结果并行度加大之后&#xff0c;iops快速下跌&#xff0c;io子系统无…

[Android]Android端ORM框架——RapidORM(v1.0)

以下内容为原创&#xff0c;欢迎转载&#xff0c;转载请注明 来自天天博客&#xff1a;http://www.cnblogs.com/tiantianbyconan/p/4748077.html Android上主流的ORM框架有很多&#xff0c;常用的有ORMLite、GreenDao等。 ORMLite&#xff1a; &#xff0d;优点&#xff1a;AP…

oracle代码实例,oracle存储过程代码实例

1、用来插入大量测试数据的存储过程CREATE OR REPLACE PROCEDURE INSERTAMOUNTTEST(ST_NUM IN NUMBER,ED_NUM IN NUMBER)ISBEGINdeclarei number;beginFOR i IN ST_NUM..ED_NUM LOOPINSERT INTO tb values(i,i,3,3,3,100,0);END LOOP;end;END;运行&…

Examining Open vSwitch Traffic Patterns

In this post, I want to provide some additional insight on how the use of Open vSwitch (OVS) affects—or doesn’t affect, in some cases—how a Linux host directs traffic through physical interfaces, OVS internal interfaces, and OVS bridges. This is somethi…

Docker 面临的安全隐患,我们该如何应对

【编者按】对比虚拟机&#xff0c;Docker 在体量等方面拥有显著的优势。然而&#xff0c;当 DevOps 享受 Docker 带来扩展性、资源利用率和弹性提升的同时&#xff0c;其所面临的安全隐患同样值得重视&#xff0c;近日 Chris Taschner 在 SEI 上撰文进行了总结。本文系 OneAPM …

oracle虑重语句,db基本语句(oracle)

一. SQL分类DDL&#xff1a;数据定义语言(Data Definition Language)DML&#xff1a;数据操纵语言(Data Manipulation Language)TCL&#xff1a;事务控制语言(Transaction Control Language)DQL&#xff1a;数据查询语言(Data Query Language)DCL&#xff1a;数据控制语言(Data…

Plist文件和字典转模型

模型与字典 1. 用模型取代字典的好处 使用字典的坏处 编译器没有自动提醒的功能,需要手敲key如果写错了编译器也不会报错2. 模型概念 概念 专门用来存放数据的对象特点 一般继承自NSObject在.h文件中声明一些用来存放数据的属性注释 //单行注释/ /多行注释/* /文档注释,调用属性…

oracle job 与存储过程,应用oracle job和存储过程

每月新增数据百万多条&#xff0c;需要定期处理2个主要数据表(test_ad,test_pd)&#xff0c;移动非当月数据到历史表中保存数据操作存储过程如下&#xff1a;MYPROC.prccreate or replace procedure MYPROC isTableName_AD char(13);TableName_PD char(13);tmp_str varchar2(10…

Oracle从小白到大牛的刷题之路(建议收藏学习)

目录 前言 数据表结构 数据库文件&#xff08;按照顺序导入&#xff09; 1基本SQL-SELECT 1.1基本SQL-SELECT语句笔记 1.2 基本SQL-SELECT语句练习 2过滤和排序数据 2.1过滤和排序数据笔记 2.2过滤和排序数据练习 3单行函数 3.1单行函数笔记 3.2单行函数练习 4多表…

oracle数据库快照打点,Oracle数据库快照的使用

Oracle数据库快照的使用正在看的ORACLE教程是:Oracle数据库快照的使用。oracle数据库的快照是一个表&#xff0c;它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。正因为快照是一个主表的查询子集&#xff0c;使用快照可以加快数据的查询速度;在保持不同数据…

3.2 双向链表

1.简介 前面3.1的单链表在操作过程中有一个缺点&#xff0c;就是后面的节点无法直接找到前面的节点&#xff0c;这使很多操作都得从头到尾去搜寻节点&#xff0c;算法效率变得非常低&#xff0c;解决这个问题的方法就是重新定义链表的节点使每个节点有两个指针&#xff0c;一个…