爬取贝壳和房天下 |
您所在的位置:网站首页 › 房天下数据真实吗 › 爬取贝壳和房天下 |
前言
在港校做RA期间,本周老师安排了爬取国内二手房的交易网站,我先调研对比了各平台,之后选取了房天下和贝壳的数据进行爬取 贝壳 房天下 贝壳需要注册登录才能访问,房天下不需要 因课题保密的要求,数据和完整代码无法分享,如果有需要的朋友或老师可以联系我个人微信(liguopingHNU)进行定制化爬取数据 提示:以下是本篇文章正文内容,思路和代码可供参考 文章目录 前言 一:前期调研 1.1 各二手房平台详细对比 1.1.1链家 网址: 在售数据 成交: 列表页: 详情页: 1.1.2安居客 网址: 列表页: 详情页: 1.1.3 房天下 网址: 列表页: 详情页: 1.1.4贝壳网 网址: 在售: 已成交: 详情页: 1.2 综合评价 1.3 最后需求确定 二:网页结构的分析 2.1 网站首页 2.2 使用selenium访问 2.3 多线程加快爬取速度 2.4 注册bug 2.5 使用request带cookies访问 三.问题记录 1.iframe 2.性能优化 一:前期调研 1.1 各二手房平台详细对比 1.1.1链家 网址:贝壳 在售数据例如:https://bj.lianjia.com/ershoufang/101108567289.html 分为:三个部分 图片展示安居客 列表页:缺点: 没有在售和已成交的区分 没有直观显示有多少房源 网站维护有问题,我在登陆时都没法登陆,难以保障数据的实时更新 详情页:以此为例: https://beijing.anjuke.com/prop/view/A5183579374?from=filter&spread=commsearch_p&uniqid=pc5f27c655bde998.84281277&position=1&kwtype=filter&now_time=1596442197 分为:两个部分 图片展示[房天下])https://esf.fang.com/) 列表页:上面显示有16万套待售,但真实性存疑,我查阅此软件评价较差,存在数据造假的问题 本网站也没有已成交的房源信息,不够全面 感觉对房源的介绍极为敷衍随意,不如其他平台的仔细介绍,真实感较差 贝壳网 在售:贝壳的二手房详情更为丰富,网页主体分为四个部分,: 图片展示区贝壳网和链家是多名网友较为推崇的两个平台,经过查询,两个平台的数据相差不大,且都有在售和已成交的数据 而其他平台,网友评价较低,主要原因为数据造假,在本次查询中也出现此问题 链家和贝壳在房源数据方面,展示极为清晰,方便我们获知总成交数量,在详情页的介绍也明显比其他两个平台更加翔实,真实性,可靠性更高 1.3 最后需求确定和老师进一步讨论之后,我们最后选择了贝壳和房天下,爬取北京市 近两年的二手房的在售和已成交 本次需求是先将新闻的概览信息保存到EXCEL文件,最后格式如下 |标题|时间|报社|版面号|版面信息|文章描述|正文url|
在保存上述简要信息的时候,我便将正文的url保存进txt文件,方便后续直接读写txt进行正文爬取 这种设计模式我觉得是做到了不同模块的解耦,如果有朋友有更好的想法也可以和我交流 最后正文保存格式如下: 按照 关键词-报道报社 - 新闻标题-正文 保存 目标的url 为 : http://www.apabi.com/pku/?pid=usp.advsearch&db=newspaper&cult=CN 除了pku 是不同机构或高校会改变这个字段,在检索查看的其他过程中,本url不变,完全使用Ajax的异步加载 给我们的自动化翻页,匹配信息,查询都带来了极大的挑战 我使用了request进行测试,发现没有办法获取到返回的信息,页面总是不相符,测试了好久,一直没有得到正确的内容 一筹莫展之际,我只能使用selenium就行匹配(但这也给后续的爬去埋下了一个巨大的坑) 查看网页源代码发现,请求之后,返回的是iframe,直接更新下面的搜索结果,我们需要的信息是在iframe里面去进行匹配,如果直接匹配页面的话,是匹配不到的 Selenium的好处是所见即所得,但是因为是模仿人的点击,速度极慢,而且书写代码时非常繁杂,点击选项时可能就是网页滑动了一下,便导致定位错误,无法匹配 2.2 使用selenium访问以下是模拟点击页面的代码,可以看到匹配元素时非常麻烦 driver_path = r"G:\Daily_Life\Google_driver\chromedriver.exe" def config(head_keyword,con_keyword,office_key): url = "http://www.apabi.com/pku/?pid=usp.advsearch&db=newspaper&cult=CN" chrome_options = Options() chrome_options.add_argument('--headless') chrome_options |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |