python-3.x - 如何抓取自动完成?
问题描述
我试图抓取网站的自动完成功能。基本上,我试图在他们的自动完成中获取每个条目。我想到的第一件事是编写递归刮板,因此它会检查所有组合 - aa、aaa、aaab 等(对于所有 26 个字母)。但这似乎非常低效。我的第二种方法是抓取他们的一些文档,计算 Tf-IDF 并提取关键字。这给出了一些不错的结果,但我很确定我无法覆盖他们的整个数据库。还有其他方法吗?你会有什么建议?
问候,
解决方案
对于页面:https://indiankanoon.org/
当您在搜索框中输入内容时,它会发出一个请求https://indiankanoon.org/qsuggest/?term=
,返回自动完成信息。而不是试图刮https://indiankanoon.org/
,而是刮qsuggest
页面。
https://indiankanoon.org/qsuggest/?term=aaa
我应该提到,该qsuggest
页面仅返回包含 3 个或更多字母的术语的结果。抓取超过 17000 个请求的所有 3 个字母组合。如果您每 5 秒发出一次请求,则需要 60 多天才能获得所有信息,前提是该网站没有首先阻止您。他们确实在网站上列出了一个 API,也许这会有所帮助。
推荐阅读
- java - 如何强制用户为 int 输入固定数量的数字?
- html - 在 Bootstrap 中,如何增加列表项之间的间距?
- java - 如果对象具有“conexion”类型的数据,我将无法编写它,我得到 java.io.NotSerializableException
- javascript - 如果纯函数返回一个不纯函数,它是纯函数吗
- c++ - 根据不同的条件初始化类模板的成员
- django - Django 2.2.1中list_field中对象的排序
- sql-server - 从另一个表中参考周以选择
- typescript - TypeScript: how to remap interface on 1 element while destructuring object?
- javascript - 在 Razor 视图中更改 dropdownlistFor 时不会触发更改功能
- html - 为什么我添加 h1 时我的网页会添加水平滚动条?