python爬虫教程MrFlySand飞沙

通过正则表达式进行数据清洗re.findall("需要清晰的数据",获取到的网页html代码),在使用前在代码开头调用importre模块

"(.*)"括号中的内容会被保留下来,其余的内容会被去掉

['百度一下,你就知道']2.3自定义请求通过request.Request()创建自定义请求对象,输出内容为

注意:data是一个列表对象

当把上面的代码改为手机版的User-Agent:

如下代码会输出请求到的html代码,有时会出现错误这是正常的,可以多运行几次代码。

re.search("查找的字符串","原数据")

re.findall("查找的字符串","原数据")返回的是一个列表

importrewithopen(r"C:/Users/MrFlySand/Desktop/testPy/英语.txt","rb")asf:data=f.read().decode()#print((data))n1=len(re.findall("homework",data))n2=len(re.findall("pros",data))n3=len(re.findall("cons",data))print("homework:",n1,"\n","pros:",n2,"\n","cons:",n3)printf(re.findall("cons",data))输出内容如下:

原子:正则表达式中实现匹配的基本单位

元字符:正则表达式中具有特殊合义的字符

importrestr="qq:2602629646,./飞沙MrFlySand"pat=r"qq"print(re.search(pat,str))pat=r"26\w"print(re.search(pat,str))pat=r"[A-Z][a-z]"print(re.search(pat,str))pat=r"[0-9][0-9][0-9]"print(re.search(pat,str))输出内容如下:

4.7元字符元字符:正则表达式中具有特殊合义的字符

importrestr="2602629646,./FlySand飞沙MrFlySand112233"#从前面匹配任意2个字符pat=".."print(re.search(pat,str))#从开头匹配,以26开头+任意数字pat="^26\d"print(re.search(pat,str))#从末尾匹配,任意符号结尾pat=".$"print(re.search(pat,str))#从末尾匹配,任意2个字符+Fly结尾pat="..Fly$"print(re.search(pat,str))#任意个字符pat=".*"print(re.search(pat,str))##M开头,d结尾,中间任意个字符pat="M.*d"print(re.search(pat,str))##从字符串前面往后匹配,str开头就是2。匹配的结果是:0~n个2+3pat="2*3"print(re.search(pat,str))##从字符串前面往后匹配,str开头就是2。匹配的结果是:0~n个1+2pat="1*2"print(re.search(pat,str))#重复0次或者1次前面的原子。匹配的结果是:0~1个2+6pat="26"print(re.search(pat,str))#+重复0次或者1次前面的原子。匹配的结果是:1~n个2+3pat="2+3"print(re.search(pat,str))输出结果如下:

None4.8匹配固定次数{n}前面的原子出现了n次{n,}至少出现n次{n,m}出现次数介于n-m之间,注意n,m之间不能有空格

importrestr="2602629646"pat=r"\d{6}"#匹配6个数字print(re.search(pat,str))str="2602629646"pat=r"\d{11}"#匹配11个数字print(re.search(pat,str))str="2602629646"pat=r"\d{6,8}"#匹配6~8个数字print(re.search(pat,str))str="2602629646"pat=r"\d{6,8}"#","和"8"之间有空格,无法正常匹配print(re.search(pat,str))输出内容如下:

data输出内容

我们可以通过XPath,将HTML文件转换成XML文档,然后用XPath查找HTML节点或元素。通过这种方法会比正则表达式更加方便。

我们需要安装1xml模块来支持xpath的操作。

在cmd窗口中输入pipinstalllxml

frombase64importencodefromlxmlimportetreetext='''python有两种导入模块的方法,分别如下

mrflysand'''#etree.HTML()将字符串解析成特殊的html对齐html=etree.HTML(text)print(html)#将html对象转换成字符串,decode()转成中文result=etree.tostring(html,encoding="utf-8").decode()print(result)输出如下:

txt中的文本

frombase64importencodeimporturllib.requestimportrefromlxmlimportetree#读取文档中所有的数据defreadAll(url):str=open(url,encoding="utf-8")strs=""#读取每一行forlineinstr.readlines():strs=line.strip()+strsreturnstrs#正则表达式匹配字符strs=readAll("C:/Users/MrFlySand/Desktop/1.txt")pat=re.compile(r'[a-z]+'or'[A-Z][a-z]+')data=pat.findall(strs)#统计每个单词出现的次数并加入到dict字典中dict={}foriinrange(0,len(data)):ifdata[i]indict:dictValue=dict[data[i]]+1dict.update({data[i]:dictValue})else:dict.update({data[i]:1})#根据字典的value值进行排序dict=sorted(dict.items(),key=lambdadict:dict[1],reverse=True)forkeyindict:print(key)输出结果:

html文件中的内容

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/2.html",parser=parser)result=etree.tostring(tree,encoding="utf-8").decode()print(result)输出内容:

12 飞沙 5.3.2.1lxml.etree.XMLSyntaxError:Openingandendingtagmismatch错误的解决办法解决方法:创建html解析器,增加parser,指定编码格式tree的结果是

fromlxmlimportetreeparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse(r'C:/mrflysand.html',parser=parser)5.4获取一类标签result=tree.xpath("//")获取一类标签,result=tree.xpath("//p")获取所有的p标签

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/index.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//p")foriinrange(0,10):print(result[i].text)html代码如下:

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/index.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//h1[@itemprop='name']")foriinrange(0,len(result)):print(result[i].text)输出内容如下:

注意:for循环中的i后面没有text,但5.5章节和5.7章节中有。

tree.xpath("//section/a/h1"),/表示下一级。

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/index.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//section/a/h1")print(result)foriinresult:print(i.text)输出内容如下:

[,,]排序算法Git命令树的最大深度5.7.2实例二\\获取所有符合条件的子标签

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/1.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//li//span")foriinresult:print(i.text)1.html中的代码内容:

mrflysandmrflysand1飞沙飞沙1当py中的代码是result=tree.xpath("//li/span"),输出如下:

飞沙飞沙15.7.3实例三1.html代码如下:

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/1.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//li//span//@class")foriinresult:print(i)输出如下:

abca15.8获取标签内容和标签名5.8.1实例一:获取倒数第二个标签html代码看5.7.3章节//li/span[last()]选中li下的span标签最后一个元素//li/span[last()-1]选中li下的span标签倒数第二个元素

parser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/1.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//li/span[last()-1]")print(result)foriinresult:print(i.text)输出内容:

[]飞沙当代码成为result=tree.xpath("//li//span[last()-1]")时,选中的是所有li下的所有span标签,输出如下:

mrflysand1飞沙5.8.2实例二:获取倒数第二个标签tree.xpath("//li/span")选中所有li标签下span标签,符合要求的有飞沙、飞沙1

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/1.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//li/span")print(result[-2].text)输出如下:

飞沙5.8.3实例三:获取指定的class标签中的文本tree.xpath("//*[@class='abc']")获取所有标签下class值为abc的文本

fromlxmlimportetreeimportreparser=etree.HTMLParser(encoding='utf-8')tree=etree.parse("C:/Users/123/Desktop/1.html",parser=parser)html=etree.tostring(tree,encoding="utf-8").decode()result=tree.xpath("//*[@class='abc']")print(result[0].text)

THE END
1.Python网络爬虫基础教程教案全套第14章认识网络爬虫教学后记黑马程序员 黑马程序员黑马程序员黑马程序员传智教育旗下 高端IT 黑马程序员传智教育旗下 高端IT教育品牌样的教育,不一样的品质《Python网络爬虫基础教程》教学设讨课程名称:授课年级:授课学期:教邺姓名:课题名称第3章抓取静态网页数据计戈1J 课时 4课时 黑马程序员传智教育旗下 高端IT教育品牌教学引入静态...https://max.book118.com/html/2022/0715/7040130025004143.shtm
2.JADEXRD分析软件上传者:python0328时间:2024-11-28 XRD分析软件Jade6.5,下载解压就可以直接使用。 一款XRD物相分析的专业软件,根据衍射图谱,可以对物相进行定性和定量分析,科研分析检测等必不可少,十分好用又强大。 上传者:qq_41867996时间:2018-11-22 基于java的校园教务系统的开题报告.docx ...https://www.iteye.com/resource/weixin_39139140-10772142
3.阐述外螺纹的画法?到2015年,我国将力争使节能环保产业总产值达到4.5万亿元,增加值占国内生产总值的比重为2%左右,节能环保产业产值年均增长15%以上,培育一批具有国际竞争力的节能环保大型企业集团。为实现上述目标,国家应该采取的措施是:()https://www.shuashuati.com/ti/27e46da46c774c7aaa5563fa2647f85da2.html
1.顶刊技巧!3D绘图!Python 3D绘图很简单 Python 中的 3-D 绘图很重要,可以更丰富、更全面地了解复杂信息,也让绘图更美观。 需要以下库: matplotlib:用于创建可视化。 numpy:用于数值运算和数据操作。 plotly:用于创建交互式绘图(用于 3-D 极坐标图)。 importmatplotlib.pyplotasplt ...https://blog.csdn.net/2301_77413856/article/details/144084611
2.python画堆积图mob649e816aeef7的技术博客Python 画堆积图的入门指南 在数据分析和可视化方面,堆积图是一种非常有效的展示方法。它可以帮助我们直观地理解不同类别的数据占比情况。如果你刚入行,可能对如何绘制堆积图感到困惑。在这篇文章中,我将为你详细介绍这个过程,并提供明确的代码示例。 整体流程 ...https://blog.51cto.com/u_16175526/12658154
3.通过Python的core()函数实现数据可视化的魅力除了折线图,core()函数还可以用来创建其他类型的图表和图像,如散点图、柱状图、饼图等。通过设置不同的参数,我们可以定制自己想要的图表样式,使数据更加直观、易于理解。 总之,Python的core()函数提供了一个简单而强大的工具来实现数据可视化。它可以帮助我们更好地理解和分析数据,并以图形方式展示出来。通过合理使用...https://www.6qe.net/amg-article-122680-VIquxoKZbN.html
4.Origin高阶技能:XRDXPSRaman分峰/拟合谱图分析配色/...这是我见过最实用的Origin教程,共32个专题,每个视频至少1小时,针对具体科研绘图案例,进行详细的制图演示,内容包括: XRD、XPS、ALS、Raman图谱绘制、分峰拟合、配色美化、图片排版、期刊投稿标准解读、三维绘图、多图层绘制、多变量绘图、信号处理、地图绘制、Origin与Python交互等。 https://cloud.tencent.com/developer/news/1790034
5.上千款精选软件合集,您专属的软件太空舱有氧周末今天有氧君给大家分享一个宝藏资源库,免费为大家提供一个新型的网上软件资源服务,整合了网上最新最丰富的软件项目,提供开发者们下载各类软件资源,并即时更新,以便大家及时获取新软件项目,从而大大提高效率。 它就是您专属的软件太空舱(以下简称太空舱)。 https://www.shangyexinzhi.com/article/6755516.html
6.Python开发GUI实战:图片转换素描画工具!tkinter作为python默认自带的模块库,无需单独安装 tkinter相比于wxpython与pyqt在制作小工具的方面,更为高效 tkinter在网上存在大量的快速入门教程 tkinter实战 为了证明tkinter的方便与高效,今天来编写一个将图片转化为素描画的小工具,先给大家看看实现效果: https://www.jianshu.com/p/e4fb23ec5f0d
7.python使用matplotlib绘制折线图python我的python学习也告一段落了。不过有些,方法还是打算总结一下和大家分享。我整理了使用matplotlib绘制折线图的一般步骤,按照这个步骤走绘制折线图一般都没啥问题。其实用matplotlib库绘制折线图的过程,其实就是类似于数学上描点,连线绘制图形的过程。所有,这个过程就可以简单的规划为获取图像点信息,描点连线,设置图线格...https://www.jb51.net/article/245657.htm
8.基于GSAS的PXRD精修从零开始Bohrium基于GSAS的PXRD精修从零开始 0. 整体介绍 1. Rietveld精修与GSAS简介 1.1 Rietveld精修 1.2 GSAS简介 2. 基于GSAS的PXRD模拟 2.1 准备工作 2.2 创建项目/添加物象 2.3 添加谱图/设定模拟参数 2.4 模拟计算 2.5 模拟结果 3. 基于GSAS的PXRD精修简单案例 3.1 准备工作 3.2 添加实验谱图与物象 3.3 精修基本设置...https://nb.bohrium.dp.tech/detail/4524154929
9.XRD精修软件EXPGUIXRD精修软件目前常用的Rietveld结构精修软件有GSAS, Fullprof, Rietan, BGMN, DBWS, WinPLOTR等等,其实他们的核心算法都是一样的。DBWS是最早的精修软件,但由于其是DOS操作界面,目前用户越来越少。而GSAS由于操作方便、界面友好、更新迅速而得到广泛使用。PC-GSAS是基于人机对话的方式,操作起来稍显复杂。在这儿我们...https://www.coder100.com/index/index/content/id/891248
10.详情项目公示在bimrocks结构特征的识别及建模工作,贺明武等[1](2014)采用现场调查、孔内电视观察和室内力学试验,揭示了角砾岩的基本物理特征以及特殊的方解石胶结方式、似熔融的接触特征和强度特征;鞠杨等[2](2016)应用 XRD 等手段建立了考虑砾岩矿物组分与分布的非均质三维重构模型;黄志全等[3](2017)提出断层带Bimrocks是由断层...https://sjjx.hhu.edu.cn/hhu/CXCY/HHU/Item/Detail/e804040f-2708-4e9c-b8ac-cab166b1d571
11.GitHubPyXRD PyXRD is a python implementation of the matrix algorithm for computer modeling of X-ray diffraction (XRD) patterns of disordered lamellar structures. It's goals are to: provide an easy user-interface for end-users provide basic tools for displaying and manipulating XRD patterns...https://github.com/PyXRD/PyXRD
12.pythonGettingXRDdatafrompymatgen,nottheplotAfter defining the structure, and importing necessary components of Python, the following last 3 lines of the script works well. The first line probably performs the calculation, the second one plots the data and the third one just gives crystal parameters. c = XRDCalculator() ax = c.get_...https://stackoverflow.com/questions/78998106/getting-xrd-data-from-pymatgen-not-the-plot