简介:今天,首席执行官指出,与您分享Python项目通常需要多少行代码。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
最纯净的Python代码几乎达到了70W线,这是一个相当大的规模。有三个具有30W?50W代码的项目,包括基本项目Cpython。
从我知道的信息中,用动态语言开发的最大的尺度项目可能是OpenStack。据说总的代码已经达到数百万行,并且仍在增加。这当然是解释动态语言能力的一个很好的例子,但是分析如此庞大的项目并不容易。
据说它可以达到一百万行并继续增加。
最大的Python代码几乎达到了70W线,这是一个非常大的项目。
在至少数十个W代码的项目中,动态语言至少没有问题。
Python的开发效率每天可以为100-150行。对于一些熟练的程序员,每天100行代码是正常的生产率,包括需求分析,设计,编码,单位测试和系统测试。
一十万线
首先创建一个容量为10的花朵过滤器
然后添加“狗”,“鱼”和“猫”的三个物体。目前,Bloom过滤器的内容如下:
然后添加“鸟”对象,花朵过滤器的内容没有改变,因为“鸟”和“鱼”完全具有相同的哈希。
最后,我们检查了一堆物体(“狗”,“鱼”,“猫”,“鸟”,“鸭”,“ emu”)是否已被索引。2和'emu'返回false。因为“鸭子”与“狗”相同。
初级分区
主要分割使用空间来分割单词。在实际的单词逻辑中,将有其他分离器。例如,Splunk的默认除法包括以下内容,用户可以定义自己的部门。
](){} |!;;,‘ *
s amp;+%21%26%2526%3B%7C%20%2B%3D - 2520%5D%5B%3A%28%28%29%29 29
搜索
好吧,在单词分割和Bloom过滤器的两种武器的支持后,我们可以来到搜索功能。
代码:
Splunk代表带有搜索功能的索引集合
每个集合都包含一个绽放过滤器,一个倒词表(词典)和一个存储所有事件的数组
将事件添加到索引中时,将进行以下逻辑
为每个事件生成一个UNQIE ID,这是序列号
将事件发送到事件,将每个单词添加到反射表中,即与与每个单词相对应的事件相对应的ID的映射结构。请注意,一个单词可能对应于多个事件,因此倒置表的值是一个集合。倒置表是大多数搜索引擎的核心函数。
搜索单词时,将制作以下逻辑
检查Bloom过滤器,如果是错误的,请直接返回
检查单词表,如果搜索单词不在单词表中,请直接返回
在倒置表中查找所有相应的事件ID,然后返回到事件的内容
更复杂的搜索
此外,在搜索过程中,我们要使用和 /或O来实现更复杂的搜索逻辑。
代码:
尽管XPath不仅可以使用正则表达式,但它并不是最方便的,也不是更方便的。我们的“美丽小组”库可以更方便爬网。
在使用它之前,它仍然是旧规则。首先安装美丽的小组库,说明如下:
它的中国发展文件:
BeautifulSoup库是一个功能强大的Python语言的XML和HTML解析库。它为处理功能提供了一些简单的功能,例如导航,搜索,修改和分析树。
美丽的库库还可以自动将输入文档转换为Unicode编码,并将输出文档转换为UTF-8编码。
因此,在使用《美容库》的过程中,无需考虑开发中的编码问题。除非您分析文档,否则本身没有指定的编码方法,因此您需要在开发中进行编码。
下面,让我们详细介绍“美丽的库”库的使用规则。
下面,让我们详细介绍“美丽的小组”库的关键知识。
首先,《美感库》库中的一个重要概念是选择解释器。因为底部的依赖性都是这些解释者,我们需要知道它。博客作者专门列出了一种形式:
从上表观察,我们通常使用爬虫的LXML HTML解析器。不仅快速,而且兼容性很强。它只需要安装简短的C语言库(不能称为缺点,应该很麻烦)。
要使用“美丽的库”库,您需要导入同一库,但是尽管您已安装了BeautifulSoup4,但导入的名称不是Beautifutsoup4,而是BS4。用法如下:
运行后,输出文本如下:
基本用法非常简单,因此我不会在此处详细介绍。从现在开始,让我们详细了解美丽的小组库的所有重要知识点。第一个是节点选择器。
SO值的节点选择器是通过节点的名称直接选择节点,然后使用字符串属性将文本获取在节点中。此方法是最快的。
例如,在基本用法中,我们使用H1直接获得H1节点,然后通过H1.String获得其文本。但是此用法具有明显的缺点,即复杂且不适合。
因此,我们需要在使用节点选择器之前缩小文档的范围。例如,有很多文档,但是我们获得的内容仅在ID的p作为博客中。然后,我们可以先获取此P,然后使用P内部的节点选择器。它非常合适。
HTML样本代码:
在以下示例中,我们仍然使用此HTML代码来解释节点选择器。
在这里,让我们教大家如何获得节点的名称属性和内容。示例如下:
运行后,效果如下:
一般而言,节点有许多子节点。您只能通过上述方法获得第一个。如果要获得标签的所有子节点,这里有两种方法。首先查看代码:
运行后,效果如下:
如上所述,我们有两种获取所有子节点的方法,一个是通过内容属性,另一个是通过儿童属性。两个遍历的结果相同。
由于您可以获得直接的子节点,因此可以肯定的是,您可以得到所有后代。示例如下:
运行后,效果如下:
同样,在实际的爬行动物程序中,我们有时需要通过反向或兄弟节点找到父节点。
美丽的库库为我们提供了父属性获得父节点的属性。同时,提供了next_sibling属性以获取当前节点的下一个兄弟节点。
示例代码如下:
运行后,效果如下:
对于节点选择器,博客作者介绍了他们可以与较少的文本内容相比,但实际爬行动物是大量数据,并且不合适地开始使用Node Selectioner。因此,我们需要将处理器考虑到处理器首先处理它。
Find_all()方法主要用于选择所有根据名称,属性,节点的文本内容满足要求的节点。它的完整定义如下:
[真实战斗]测试上面的HTML,我们得到名称= a,attr = {“ class”:“ aaa”},文本等于text =“ python plate”板的节点。
示例代码如下所示:
运行后,效果如下:
find()只是find_all()的全部,但是结果是两个不同的:
1.查找()仅查找符合条件的第一个节点,而find_all()是找到满足条件的所有节点2. find(find()方法返回bs4.element.tag对象,而find_all()返回bs4.Element.ResultSet对象
下面,让我们在上面的HTML中找到一个标签,以查看与返回结果有什么不同的标签。示例如下:
运行后,效果如下:
首先,让我们看一下CSS选择器的规则:
1..className:选择名为className的节点,即类属性值是className2的节点2。#idname:iDname:选择带有idname的节点3.nodeName:nodeName:选择名为nodeName node node node node的节点。
一般而言,在“ leautfulsoup库”中,我们使用函数select()执行CSS选择器的操作。该示例如下:
在这里,我们选择等于li1的类的节点。运行后,效果如下:
因为我们需要实施嵌套CSS选择器的使用,但是上面的HTML不合适。在此,我们进行了一些修改,只需更改
结论:以上是CTO首席执行官注明给所有人的Python项目的一般内容。我希望这对每个人都会有所帮助。如果您想了解有关此信息的更多信息,请记住要收集对该网站的关注。