这个项目使用XML模板从网站中提取数据,几乎不需要代码
webparsa的Python项目详细描述
网页
这个项目使用XML模板从网站中提取数据,几乎不需要代码。在
XML模板用于模拟HTML本身的结构,允许您制作直观的选择器。 你可以直接复制和粘贴网站代码,并指定哪些属性是你想要的变量,它会 工作。在
存储单个值
注意:对于图像,请使用<p_img>
标记,因为img标记在HTML中不能有子级。
要从元素的一部分提取某个值,请使用<value>
标记。
值标签需要两件事:
- 名称:要存储在其中的变量的名称
- (内部文本):要存储的属性。在
存储值列表
要将类似div的列表导入为python列表,请用<list>
标记封装标记的单个div。
列表标记只需要一个属性:
- 名称:要存储在其中的变量的名称 不必是值的直接父级!在
存储值dict
要将一些值组合为dict,请将这些值包装在<dict>
标记中。
需要一个name属性,如<list>
和<value>
。
不必是值的直接父级!在
可能的属性:
- 在自我属性(any attribute):来自HTML标记的属性
- 在自我.text:内部文本
- 在自身元素:beauthulsoup元素
过滤
要选择带有HTML的元素,只需编写HTML元素。在
例如,编写<div class='foo'>
将选择任何具有foo
类的div
。在
要过滤任何属性,请在元素中使用“filter.*”作为属性。在
- 在索引=N过滤器:此元素必须位于select(element)[N]
- 在过滤器.regex.*=正则表达式:此属性必须与某个正则表达式匹配。示例:过滤器.regex.text=.+, 过滤器.regex.attrs。数据=\d+。在
- 在过滤器.功能=*:您为我们定义一个函数,在构造函数期间作为关键字参数传递。然后,我们传递一个包含属性('text'、'element'、'index'和另一个名为'attrs'的字典)的dict,如果应该拒绝节点,那么函数将返回False。在
后处理
在任何标记中,您都可以添加属性“after”以在任何<list>, <dict>, or <value>
的值上运行。在
例如
<div id=number>
<value name=number after=int>self.text</value>
</div>
将对从返回的值调用用户定义函数int
自我.text.
这适用于XML树中的任何节点,包括HTML元素。
您也可以在<list>
和<value>
标记中调用这个after
。在
注意:在列表中,此函数将在整个列表中调用,而不是在单个元素上调用!
若要定义“int”函数,请将其作为Parsa((structure),int=function)传入构造函数
可能有用的方法是使用一个名为df
的函数,它从列表元素生成pandas数据帧。在
默认后处理函数:
- (用户定义函数)
- .<;…>;:运行类型(值)。<;…>;(值)。本质上是价值。<;…>;()。示例:“.strip”->;x.strip()
- 内置函数,如int、float、str、list、dict等。模块内置的任何属性。在
其他后处理功能:
- 删除逗号:x.replace(“,”,“”)
- 拆分逗号:x.split(“,”)
- 拆分:x.split(“”)
您可以通过在函数名之间添加“+”来使用函数组合。 例如: 删除逗号+int:“1000000”->;“1000000”->;1000000。在
如果您想使用多个参数,我建议您编写一个包装器函数或使用functools.partial
生成一个partial
。在
所需内容
默认情况下,所有选择器都必须存在才能存储数据点。
但是,如果希望数据点是可选的,请将选择器包装在<unrequired>
中。在
示例
华盛顿-邮政编码.xml
希望这足以解释它是如何工作的! 这个得到W阿辛顿邮报头条新闻
{pr2}$华盛顿-后py
{pr}$许可证
麻省理工学院标准许可证。在
- 项目
标签: