Scrapy爬取贝壳网并存入csv

一、分析目标站点

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

 

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标签里

 

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

url = 'https://nb.ke.c
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您提供一些关于使用Scrapy爬取贝壳新房信息的指导。 首先,您需要安装Scrapy。在命令行中运行以下命令: ```python pip install scrapy ``` 接下来,您需要创建一个新的Scrapy项目。在命令行中,进入您想要存储项目的目录,然后运行以下命令: ```python scrapy startproject beike ``` 这将创建一个名为“beike”的新Scrapy项目。然后,您需要创建一个新的Spider来爬取贝壳新房信息。在命令行中,进入您的项目目录,然后运行以下命令: ```python scrapy genspider beike_spider beike.com ``` 这将创建一个名为“beike_spider”的新Spider,并将其链接到“beike.com”站。 接下来,在您的Spider中,您需要定义如何爬取贝壳新房页面。以下是一个示例实现: ```python import scrapy class BeikeSpider(scrapy.Spider): name = 'beike_spider' start_urls = ['https://newhouse.fang.com/house/s/'] def parse(self, response): for house in response.css('div.nhouse_list ul li'): yield { 'name': house.css('div.house_title a::text').get(), 'price': house.css('div.nhouse_price span::text').get(), } next_page = response.css('div.housetype_page a.next::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 这个Spider将从“https://newhouse.fang.com/house/s/”页面开始,然后找到页面中的每个新房,并提取名称和价格信息。然后,它将翻页并继续提取信息,直到没有更多页面可用。 最后,您可以在命令行中运行以下命令来运行您的Spider并将结果保存CSV文件中: ```python scrapy crawl beike_spider -o beike.csv ``` 这将运行您的Spider,并将提取的信息保存到名为“beike.csv”的文件中。 希望这些指导能够帮助您开始使用Scrapy爬取贝壳新房信息!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值