请问在爬取【贝壳租房】的时候,不同页面得到的结果相同如何解决?

stream_ 2021-02-08 03:52:53
在查询的过程中,我发现URL构成大致为:https://{0}.http://zu.ke.com/zufang/pg{1}

并且每一个房源有唯一房源编号,构成具体页面链接可进行访问。

所以我设置MySQL两列:1.自增ID做主键,2.房源编号唯一

但是在爬取过程中,通过改变pg的页数,得到的房源编号重复比例极大,一页30条,大致100页,最终结果只有三百多条(一开始以为代码没写对,后来我用单线程检查了循环数,返回是否有问题,用print发现不同页面很多返回的ID都是重复的)

后来我以为是推荐系统的问题,然后登录,写入cookie,得到的结果大致还是这样。

如何解决这种问题,感谢。
...全文
356 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂的Code. 2021-02-17
  • 打赏
  • 举报
回复
可以看下我写的博客使用scrapy爬取贝壳租房,我也遇到了好多问题,都解决了,顺利把数据爬取下来了https://blog.csdn.net/weixin_44454180/article/details/113455910
stream_ 2021-02-15
  • 打赏
  • 举报
回复
引用 6 楼 天不绝我 的回复:
我用浏览器打开的网站,每次刷新都变数据。 也就是说,爬虫和正常用户得到的结果是一样的。 那么这种行为还是反爬吗?? 颜色一样,长度一样,重量一样,叫声一样,那就可以判定是同一种东西。
谢谢您,我再研究一下。
放风喽 2021-02-09
  • 打赏
  • 举报
回复
数据是在https://bj.zu.ke.com/zufang/pg7/这个网址出来的,也就是说,在服务器端渲染的数据。 然后查看请求参数,srcid参数每次都会变,其他参数全部不变。 所以我判断,它根本没有那么多数据,每次都是随机抽取一组数据,在服务器端渲染完成,发送过来。 只要保证和上一页的数据不一样就行了。
放风喽 2021-02-09
  • 打赏
  • 举报
回复
我用浏览器打开的网站,每次刷新都变数据。 也就是说,爬虫和正常用户得到的结果是一样的。 那么这种行为还是反爬吗?? 颜色一样,长度一样,重量一样,叫声一样,那就可以判定是同一种东西。
stream_ 2021-02-09
  • 打赏
  • 举报
回复
引用 4 楼 天不绝我 的回复:
数据是在https://bj.zu.ke.com/zufang/pg7/这个网址出来的,也就是说,在服务器端渲染的数据。 然后查看请求参数,srcid参数每次都会变,其他参数全部不变。 所以我判断,它根本没有那么多数据,每次都是随机抽取一组数据,在服务器端渲染完成,发送过来。 只要保证和上一页的数据不一样就行了。
但是这个数量级差距太大了,显示:已为您找到 42773 套 北京租房,怎么可能只有三百多条数据。我觉得是某种反爬机制,我有随机sleep和多个useragent随机访问,但是还是没有办法避免这样的情况。
stream_ 2021-02-08
  • 打赏
  • 举报
回复
引用 1 楼 天不绝我 的回复:
爬取过程不要涉及复杂操作,所以获取页面的html之后,直接将html存储下来,然后获取下一页的html。节省时间,最大化利用网络。 另外开一个程序从html中过滤数据,这个时候就可以操作去重。所有复杂操作由这个程序进行。
你可以尝试一下贝壳的租房网站,https://bj.zu.ke.com/zufang。无论登录与否,刷新页面得到的结果都是不同的。和响应时间没太大关系
放风喽 2021-02-08
  • 打赏
  • 举报
回复
爬取过程不要涉及复杂操作,所以获取页面的html之后,直接将html存储下来,然后获取下一页的html。节省时间,最大化利用网络。 另外开一个程序从html中过滤数据,这个时候就可以操作去重。所有复杂操作由这个程序进行。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧