Scrapy爬取贝壳网并存入csv

本文介绍如何使用Scrapy爬虫框架抓取宁波地区贝壳网的房产信息,包括分析目标站点(宁波各区域页面及房源详情页),解析房源页面上的小区、单价、总价等关键数据,并详细说明了项目的创建、配置以及数据处理过程。

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

一、分析目标站点

本文以爬取宁波地区的房产信息为例

 

1、宁波整个市页面

宁波地区的网址都是以上面的格式,再加上各个区的拼音,即可进入各个区的网页。

各个区的名称:

areas = {'海曙区': 'haishuqu1', '江北区': 'jiangbeiqu1',
             '镇海区': 'zhenhaiqu1', '北仑区': 'beilunqu1',
             '鄞州区': 'yinzhouqu2', '余姚市': 'yuyaoshi',
             '慈溪市': 'cixishi', '奉化区': 'fenghuaqu',
             '象山县': 'xiangshanxian', '宁海县': 'ninghaixian'}

 

2、解析各个区的页面

分析海曙区的页面发现随着页数的增加,页面的变化规律为 pg + 当页的页数

而各个区页面的页数是不相同的,比如海曙区的有100页,而宁海县的确只有一页。

 

通过查看源代码发现,各个区的最大页数在totalPage属性中。

 

接下我们使用requests库与BeautifulSoup库提取出出各个区的最大页数

import requests
from bs4 import BeautifulSoup

url = 'https://nb.ke.com/ershoufang/haishuqu1/pg2/'
response = requests.get(url)
max_num = BeautifulSoup(response.text, 'lxml').find(class_='house-lst-page-box')
min = max_num.attrs['page-data'].find(":")
max = max_num.attrs['page-data'].find(",")
page = int(max_num.attrs['page-data'][min+1:max])
print(page)

再利用for循环迭代各个区的最大页数,将其与各区url连接起来便可得到各个区所有页面的url

for i in range(1, page+1):
    print('https://nb.ke.com/ershoufang/haishuqu1/pg{}/'.format(i))

 

找出当页每个房源信息的url

url = 'https://nb.ke.com/ershoufang/haishuqu1/pg2/'
response = requests.get(url)
soups = BeautifulSoup(response.text, 'lxml').find_all('li', class_='clear')
for soup in soups:
    every_url = soup.find(class_='title').a.attrs['href']
    print(every_url)

 

 

3、解析各个房源的页面

在这里我们取小区、单价、总价和以下信息。

房源基本信息都在base属性下的li标签里

 

房源基本信息中所要提取的信息使用正则匹配,因为这几个信息可能会不完全而且位置有时候会发生变化。


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值