爬虫爬取赶集网租房信息

本文介绍了如何利用Python的Scrapy框架搭建爬虫,爬取赶集网上的租房信息,包括房源的户型和价格。通过设置配置、编写spider、测试代码、获取数据并使用item对象封装,最后通过pipeline将数据存储。同时,文章还涵盖了对爬取数据的初步分析和可视化处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、爬虫–scrapy

1.搭建环境

代码如下(示例):

import scrapy
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.加载scrapy框架

代码如下(示例):

# terminal 终端实现
cd .. # 跳转到上一层目录
scrapy startproject booktop # 和项目同名的scrapy框架项目

3. setting配置

代码如下(示例):

ROBOTSTXT_OBEY = False # 君子协议 false 不遵守
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
DOWNLOAD_DELAY = 0.5 # 下载延迟

4.spider编写

代码如下(示例):

# spiders文件夹下创建python文件 ganspider.py
import scrapy
from demo6.items import HouseItem
class GanJiSpider(scrapy.Spider):
name="gan_spider"
allowed_domains=["xiangyang.ganji.com"]
start_urls=["http://xiangyang.ganji.com/zufang/"]
# 解析数据
def parse(self, response, **kwargs):
# print(response.text)

测试

代码如下(示例):

# 在terminal终端进行
cd gandemo # 进入项目文件夹
scrapy crawl gan_spider # 运行项目下的爬虫(和name的值保持一致)
# 测试成功,看到页面代码

5. 获取数据(户型+价格)

代码如下(示例):

# 需要导入HouseItem类 文件开头导入 from demo6.items import HouseItem
from demo6.items import HouseItem
class HouseSpider(scrapy.Spider):
name="house_spider"
allowed_domains=["xiangyang.ganji.com"]
start_urls=["http://xiangyang.ganji.com/zufang/"]
# 解析数据
def parse(self, response, **kwargs):
# 所有的房子
houses=response.css('dl.f-list-item-wrap.min-line-height.f-clear')
# 户型 价格
for house in houses:
size=house.css('dd.dd-item.size span:first-child::text').extract()
[0]
# print(size)
price=house.css('div.price span.num::text').extract()[0]
# print(price)
yield HouseItem(size=size,price=price)

需要使用item对象完成数据封装并传输

代码如下(示例):

# items.py书写房屋类
class HouseItem(scrapy.Item):
size=scrapy.Field()
price=scrapy.Field()
pass

6.pipeline 管道存储数据

代码如下(示例):

# 在setting文件下,解开注释
ITEM_PIPELINES = {
'booktop.pipelines.HousePipeline': 300,
}

#数据存储到txt文件下
# 打开管道文件 BooktopPipeline
class HousePipeline:
def process_item(self, item, spider):
file=open('house.txt','a+',encoding='utf-8')
file.write( item['size']+','+item['price']+'\n')
return item
# 运行测试结果house.txt下有数据成功

二、分析和可视化

代码如下(示例):

# 在项目中创建 分析文件 demo.py
import pandas as pd
import matplotlib.pyplot as plt
# 数据源
data=pd.read_csv('house.txt',names=['size','price'])
print(data)
# 统计groupby不同户型的最高价max,最低价min,均价mean,
result=data.groupby('size').agg(['max','min','mean'])
print(result)
# 绘制不同户型均价折线图、柱状图
import matplotlib
# 中文可显示
font = {'family': 'microsoft yahei',
'weight': 'bold',
'size': 12}
matplotlib.rc('font', **font)
plt.title('不同户型房源示意图')
# 折线图 柱状图
plt.plot(result.index,result['price']['mean'],'r*--')
plt.bar(result.index,result['price']['mean'])
plt.show()

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值