是否有一个Web抓取工具或库,可以自动检测重复的HTML块并抓取块内的文本内容,从而消除人工输入规则(CSS选择器或xpath)来查找内容的需要?
这是基于一个假设,即现代内容网站是由服务器端语言(如PHP或Python)动态生成的。内容几乎总是由模板中的for循环呈现,因此总是可以找到重复的HTML块。例如:
<div id="content">
<div class="blog entry">
<div class="title">
<h1>1st post</h2>
</div>
<div class="content">
<p>...</p>
</div>
</div>
<div class="blog entry">
<div class="title">
<h1>2nd post</h2>
</div>
<div class="content">
<p>...</p>
</div>
</div>
<div class="blog entry">
<div class="title">
<h1>3rd post</h2>
</div>
<div class="content">
<p>...</p>
</div>
</div>
</div>
像bautiful soap和scrappy这样的库都是靠人输入规则才能进行刮取的,它们不是我想要的。
4条答案
按热度按时间aiqt4smr1#
没有使用过,但听说过scrapely:
与大多数抓取库不同,Scrapely不使用DOM树或xpath,因此它不依赖于lxml或libxml 2等库,而是使用一个内部的pure-python解析器,该解析器可以接受格式较差的HTML,HTML被转换为一个令牌id数组,用于匹配要提取的项。
Scrapely提取基于基于示例学习算法,匹配的项目被组合成复杂对象(它支持嵌套和重复对象),使用解析器树,受AHierarchicalApproachtoWrapper归纳的启发
wi3ka0sx2#
你可能想看看我的scraping library,它不是自动工作的,也不会检测重复的部分,但它很接近,因为它根本不需要规则,而是使用模板,你可以直接从html中获得模板。
例如,在上面的例子中,读取2个数组中所有帖子的模板是:
u7up0aaq3#
您可以尝试HTQL:
qgzx9mmu4#
PyDepta可能会有帮助,它可以从HTML页面中提取结构化数据,并在无监督模式下工作。