专门为igem团队wiki页面构建的gui+cli+库webscraper
igemwikiscraper的Python项目详细描述
igem wikiscraper
一个快速和肮脏的python cli工具,用于抓取igem wiki。可用于提取任何相关的基于HTML的信息。请注意,此工具不会在实验室手册(例如,涉及PDF的手册)、用户交互或页面滚动中动态加载内容的页面或重定向到其他网站的页面(IGEM不允许这样做)上运行。
< >使用< > >这个工具目前只对python3起作用。python2兼容性在backburner上。任何说明都假设您已经安装了python3并在路径上。
- 通过
pip
安装,或从版本下载- 创建一个新文件夹来保存所有的信息和擦痕。添加
数据
和输出
子目录- 将
config.json
从此处复制到这个新文件夹中- 从http://igem.org/team_list" rel="nofollow">http://igem.org/team_list
检索数据- 根据需要修改
config.json
。下面提供配置选项的说明。- 使用
wikiscraper
或wikiscraper gui
。见下文。 - 创建一个新文件夹来保存所有的信息和擦痕。添加
GUI
有一个gui工具可用。使用pip install igemwikicsrapper
安装后,可以通过
wikiscraper gui
访问此工具。在使用此图形用户界面之前,应遵循上述步骤1-5。
终端
这些命令应该适用于ubuntu。对于windows,将pip
替换为pip3
。对于Mac或其他Unix,您可以自己操作。
pip3 install igemwikiscraper mkdir igem-scrapes cd igem-scrapes wget https://github.com/Virginia-iGEM/igem-wikiscraper/blob/master/igemwikiscraper/config.json nano config.json # modify as needed mkdir {data,output}cd data wget https://raw.githubusercontent.com/Virginia-iGEM/igem-wikiscraper/master/data/2018__team_list__2018-07-02.csv cd .. wikiscraper data/2018__team_list__2018-07-02.csv
输出文件可以在output/
下找到,也可以按配置找到。
刀具功能的简要说明
该工具从团队名称和年份列表生成的url中检索原始html。这个原始的html然后通过beautifulsoup传递,beautifulsoup是一个html解析器和html选择器的组合,专门为web垃圾创建。
在预处理过程中删除特定的html标记(例如脚本和样式标记,我们不需要),然后使用模拟jquery选择器(使用html selector
选项)选择一组标记。然后,这组标记会被它们的内容"拉紧",删除太短、不包含句子以及包含任何javascript或css主题的条目。
然后,所选标记的所有子标记都将被展开,丢弃它们的属性,并将其内容仅保留在(我相信是)预先排序的树遍历中。
对于子页面指定的每个页面,都会执行此过程,为每个团队留下一个字符串列表。在附加到团队信息并在
outputfile
指定的.csv文件中作为一行写出之前,通过将子列表与换行符连接,将此2d列表展平为1d。对于团队列表中的每个团队,都会重复此操作,以建立一个团队信息列表,并与有用的已收集数据配对。
配置
注意:使用cli时可以设置其中一些选项。输入wikiscraper-h
获取可通过cli设置的选项列表。这对于像-vv
这样的选项是很方便的,您可能不希望在每次刮擦尝试中都看到这些选项。
- 数据:我们接收和查找哪种数据的选项
- 子页面:查看wiki上的哪些页面。
""表示索引。请注意,每一页都以正斜线开头;每一页都必须以正斜线开头。示例:
/team
,/safety
- 文件分隔符:工作组名称列表使用哪种CSV分隔符?igem团队列表页似乎生成了带有逗号分隔符的csv。
- 开始:从列表中的哪个团队开始。设为负数移动限制。
- 结束:列表中以哪个队结束。设置为负值可取消限制。
- 子页面:查看wiki上的哪些页面。
- scraper:关于scraper如何过滤和解释数据的选项
- html selector:html元素的jquery样式选择器。
内容
似乎包括所有手写的团队信息,而不包括任何额外的垃圾信息。在检查了许多igem wiki之后,我们发现所有的内容都应该包装在\mw content text
中,但是由于有太多的igem wiki(大约10%)有破损的html,大多是未配对的html标记,我们必须对选择器慷慨一些。 - gracetime:在html get请求之间等待的秒数。强烈建议将此值保持在1或以上;任何更低的值都被认为是不礼貌的网页抓取标准,可能会破坏igem wiki,并可能被视为犯罪(拒绝服务攻击,尽管是一种糟糕的攻击)。
- stripwhitespace:删除前导空格和尾随空格。稍微清理输出。
- collapsenewlines:删除检索到的字符串中的换行字符串
- 消费脚本:在预处理HTML时删除任何脚本标记
- 消费税样式:在预处理HTML时删除任何样式标记
- 使用:启用/禁用下面列出的筛选器。
- 空格计数:按字符串包含的空格数筛选字符串。如果字符串的空格数小于此数,则将排除该字符串。
- 句点计数:按包含的句点数筛选字符串。如果字符串的句点数小于此数,则将排除它。
- negative_regex:带有双转义反斜杠的regex。如果字符串与此正则表达式匹配,则将排除它。
- html selector:html元素的jquery样式选择器。
- 输出:输出文件的选项
- output file:输出结果的文件的路径。
- 文件分隔符:分隔输出.csv文件中的列。默认为垂直管道,
,对于纯HTML内容很有用。
- filequotechar:用于在.csv文件中封装转义字符串。双引号
"
相当标准。 - verbose:设置为
0
仅打印进度报告。设置为1
可在每个刮出的wiki页面上方打印有用信息。设置为2
打印所有刮下的内容。
待办事项
- 展开collapse newlines选项也可以将换行符和制表符的字符串折叠成一个换行符
- 使其成为
scraper.下的选项。使用
实际启用/禁用过滤器 - 用提取任意HTML元素的HTML选择器替换
消费税脚本
和消费税样式
标志 - 启用对多个文件的输出,或确保多个输入导致一个正常的单个输出