本节使用 Python 爬虫库完成链家二手房(https://bj.lianjia.com/ershoufang/rs/)房源信息抓取,包括楼层、区域、总价、单价等信息。在编写此程序的过程中,您将体会到 lxml 解析库的实际应用。
编写程序流程分析
打开链家网站后,第一步,确定网站是否为静态网站,通过在网页源码内搜索关键字的方法,可以确定其为静态网站;第二步,确定要抓取页面的 URL 规律,第三步,根据要抓取的数据确定 Xpath 表达式;最后一步,编写 Python 爬虫程序。
通过简单的分析可知 URL 具有以下规律:
第一页:https://bj.lianjia.com/ershoufang/pg1/ 第二页:https://bj.lianjia.com/ershoufang/pg2/ 第三页:https://bj.lianjia.com/ershoufang/pg3/ 第n页:https://bj.lianjia.com/ershoufang/pgn/
确定Xpath表达式
使用 Chrome 开发者工具对页面元素进行审查,从而确定 Xpath 表达式。首先根据要抓取的数据确定“基准表达式”。通过审查一处房源的元素结构,可以得知房源信息都包含在以下代码中:
1.
2.
1) 确定基准表达式
待抓取的房源信息都包含在相应的
标签中,如下所示:
........
而每个页面中都包含 30 个房源,因此我们要匹配以下节点的父节点或者先辈节点,从而确定 Xpath 基准表达式:
通过页面结构分析可以得出每页的 30 个房源信息全部包含以下节点中:
- 房源信息..
接下来,使用调试工具定位上述元素,然后滚动鼠标滑。这时候神奇的一幕出现了,你会发现li
标签的class
属性值发生了变化,其结果如下:
- 房源信息..
发生变化的原因是由于 JS 事件触发导致的。因此就需要去页面的源码页进行匹配。在