通过爬虫爬取链家的新房数据https://bj.fang.lianjia.com/loupan/,并进行预处理。
• 最终的csv文件,应包括以下字段:名称,地理位置(3个字段分别存储),房型(只保留最小房型),面积(按照最小值),总价(万元,整数),均价(万元,保留小数点后4位);
• 对于所有字符串字段,要求去掉所有的前后空格;
• 如果有缺失数据,不用填充。
• 找出总价最贵和最便宜的房子,以及总价的中位数
• 找出单价最贵和最便宜的房子,以及单价的中位数
1.设计爬虫
关于如何设计爬虫,前一篇博文详细讲述了设计爬虫获取链家二手房数据,在此简略讲述。
链家的页面可以静态获取,因此可以结合Xpath来获取网页内容。设计Item如下:
import scrapy
class LianjiaItem(scrapy.Item):
name = scrapy.Field() # 名字
area = scrapy.Field() # 位置
area_detail = scrapy.Field()
position = scrapy.Field()
type = scrapy.Field() # 房型
square = scrapy.Field() # 面积
total = scrapy.Field() # 总价
average = scrapy.Field() # 均价
pass
然后是设计spider.py文件:
from lianjia.items import LianjiaItem
import scrapy
import re
class mySpider(scrapy.spiders.Spider):
name = "lianjia"
allowed_domains = ["bj.lianjia.com/"]
url = "https://bj.fang.lianjia.com/loupan/pg{}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q&