试图用Python从这个网站上抓取所有的名字:
https://profile.tmb.state.tx.us/Search.aspx?9e94dec6-c7e7-4054-b5fb-20a1fcdbab53
问题是它将每次搜索限制在前50个结果。
由于姓氏搜索允许通配符,我尝试使用一个搜索结果来缩小后续搜索结果的范围(使用前缀)。但是,当50个以上的人具有相同的姓氏时,这种方法就变得困难了。
有没有其他的想法如何得到每一个可能的名字从这个网站?谢谢!!
试图用Python从这个网站上抓取所有的名字:
https://profile.tmb.state.tx.us/Search.aspx?9e94dec6-c7e7-4054-b5fb-20a1fcdbab53
问题是它将每次搜索限制在前50个结果。
由于姓氏搜索允许通配符,我尝试使用一个搜索结果来缩小后续搜索结果的范围(使用前缀)。但是,当50个以上的人具有相同的姓氏时,这种方法就变得困难了。
有没有其他的想法如何得到每一个可能的名字从这个网站?谢谢!!
2条答案
按热度按时间mlnl4t2r1#
从请求和JS来看,这个限制似乎是服务器端的。我看不出有任何方法可以检索到超过50个结果。
暴力是我认为你能抓取这个站点的唯一方法,而且它不是那么微不足道。你需要生成越来越具体的查询,直到响应少于50个结果。
对于每一个长度的组合,例如从
a
开始,你可以搜索a*
。如果结果少于50个,就刮取它们并继续下一个组合。否则你需要刮取以a
开始的所有长度为两个字符的组合:aa*
、ab*
、ac*
等等。我肯定有专门的术语,但我不知道!
5n0oy7gb2#
我认为用char递减会更好。比如AAB -〉AAA。你会发现所有的名字都是微不足道的解决方案,但它会花费很多时间。为了优化你可以使用无头浏览器。