1. 最终效果图
3. 实现思路
1. 爬取的是链家网的成都地区的新房源,爬出房源的名字、价格、地址和 url 这四个。我是基于 python 的 scrapy 实现爬虫的。
2. 在终端安装 scrapy, 使用命令 pip install scrapy, 安装完后新建项目 scrapy startproject fangjia。
3. 明确需要爬取的数据,在 items.py 文件中写入需要爬取的数据。在 scrapy 中,Item 是用来抓取内容的容器,类似 python 中的字典
- import scrapyclass FangjiaItem(scrapy.Item): FANGJIA_ADDRESS = scrapy.Field() # 住房地址 FANGJIA_NAME = scrapy.Field() # 名字 FANGJIA_PRICE = scrapy.Field() # 房价 FANGJIA_URL = scrapy.Field() # 房源url
4. 下面分析下网页,来到成都房源的首页,一共有 19 个分页,分页的 url,最后一个数字代表页数。查看网页源代码如下:
可以直接在该网页抓取我们想要的房名、地址、价格和 url。我的方法是先抓取 url, 再进入具体网页抓取想要的数据。从上图可以看到 a 标签的 href="/loupan/p_chaygceqaausi/" 即为我们想要的相对路径,拼接 http://cd.fang.lianjia.com 成 http://cd.fang.lianjia.com/loupan/p_chaygceqaausi/ 即为我们需要的 url。
5. 使用 xpath 抓取上面的 a 标签中的 href,fang_links = response.xpath('//div[@class="list-wrap"]/ul[@id="house-lst"]/li/div[@class="pic-panel"]/a/@href').extract() 抓取一个页面的所有的 url 集合,遍历上面的集合,请求具体页面。
6. 来到一个具体页面分析,抓取我们要的数据标签位置
房源单价
房源地址
抓取的代码如下:
- name = response.xpath('//div[@class="name-box"]/a/@title').extract()[0] url = response.xpath('//div[@class="name-box"]/a/@href').extract()[0] price = response.xpath('//p[@class="jiage"]/span[@class="junjia"]/text()').extract()[0] address = response.xpath('//p[@class="where"]/span/@title').extract()[0]
7. 把上面抓取的数据放入 item 中,创建一个 items.py 定义的 FangjiaItem 类对象,最终输出这个对象 item
- item['FANGJIA_NAME'] = nameitem['FANGJIA_ADDRESS'] = addressitem['FANGJIA_PRICE'] = priceitem['FANGJIA_URL'] = 'http://cd.fang.lianjia.com'+urlyield item
8. 在 scrapy 工程的 settings.py 文件中要设置如下代码:
- ITEM_PIPELINES = {
- 'fangjia.pipelines.FangjiaPipeline': 300
- }
高德地图 API 调用
采用高德地图对房源进行可视化操作,在工程根目录下创建 demo.html 文件,页面大框架可直接从示例中心复制:高德 JavaScript API 示例中心 http://lbs.amap.com/api/javascript-api/example/map/map-show/。具体可以看我仓库中的 demo.html 文件。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: