Scrapy爬取58同城二手房目标网站url地址为https://cq.58.com/ershoufang/。 1、要求爬取重庆挂牌出售的全部二手房信息信息。爬取信息包括卖点、楼盘、楼盘地址、房屋户型、楼层、建筑年代、每平单价、房屋总价
时间: 2024-06-07 08:11:59 浏览: 119
爬虫 爬取58同城二手房信息.zip
5星 · 资源好评率100%
好的,你需要安装Scrapy和相关的依赖库。可以使用以下命令进行安装:
```
pip install Scrapy
```
接下来,你需要创建一个Scrapy项目,可以使用以下命令:
```
scrapy startproject chongqing58
```
进入项目目录,打开 `settings.py` 文件,添加如下代码:
```
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 3
DEFAULT_REQUEST_HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
```
这里设置了下载延迟为3秒,避免对目标网站造成过大的访问压力,还设置了一个浏览器 User-Agent,模拟浏览器访问网站。
接下来,你需要创建一个Spider,打开 `spiders` 目录,创建一个名为 `ershoufang.py` 的文件,并添加以下代码:
```
import scrapy
from chongqing58.items import Chongqing58Item
class ErshoufangSpider(scrapy.Spider):
name = 'ershoufang'
allowed_domains = ['cq.58.com']
start_urls = ['https://cq.58.com/ershoufang/']
def parse(self, response):
# 获取所有房源链接
house_links = response.xpath('//div[@class="list-info"]/h2/a/@href')
for house_link in house_links:
yield scrapy.Request(house_link.extract(), callback=self.parse_house)
# 获取下一页链接
next_page_link = response.xpath('//a[@class="next"]/@href')
if next_page_link:
yield scrapy.Request(next_page_link.extract_first(), callback=self.parse)
def parse_house(self, response):
item = Chongqing58Item()
# 卖点
item['selling_point'] = response.xpath('//div[@class="title"]/h1/text()') \
.extract_first(default='').strip()
# 楼盘
item['building'] = response.xpath('//div[@class="communityName"]/a/text()') \
.extract_first(default='').strip()
# 楼盘地址
item['address'] = response.xpath('//div[@class="areaName"]/span[@class="info"]/a/text()') \
.extract_first(default='').strip()
# 房屋户型、楼层、建筑年代
property_info = response.xpath('//div[@class="introContent"]/ul/li')
for info in property_info:
key = info.xpath('span[@class="label"]/text()').extract_first(default='').strip()
value = info.xpath('span[@class="main"]/text()').extract_first(default='').strip()
if '房屋户型' in key:
item['layout'] = value
elif '楼层' in key:
item['floor'] = value
elif '建筑年代' in key:
item['build_year'] = value
# 每平单价、房屋总价
price_info = response.xpath('//div[@class="price"]/span')
for info in price_info:
key = info.xpath('label/text()').extract_first(default='').strip()
value = info.xpath('text()').extract_first(default='').strip()
if '单价' in key:
item['unit_price'] = value
elif '总价' in key:
item['total_price'] = value
yield item
```
这个Spider首先访问目标网站首页,获取所有房源链接,并依次访问每个房源链接,获取所需信息。最后将所有信息存储到 `Chongqing58Item` 对象中,并通过 `yield` 关键字返回。在这个Spider中,我们使用了XPath语法来定位所需的HTML元素。
最后,我们需要定义一个 `Item` 类型,在 `items.py` 文件中添加以下代码:
```
import scrapy
class Chongqing58Item(scrapy.Item):
selling_point = scrapy.Field() # 卖点
building = scrapy.Field() # 楼盘
address = scrapy.Field() # 楼盘地址
layout = scrapy.Field() # 房屋户型
floor = scrapy.Field() # 楼层
build_year = scrapy.Field() # 建筑年代
unit_price = scrapy.Field() # 每平单价
total_price = scrapy.Field() # 房屋总价
```
现在,我们可以在项目目录下执行以下命令启动爬虫了:
```
scrapy crawl ershoufang -o result.csv
```
这个命令会启动 `ershoufang` Spider,并将结果存储到 `result.csv` 文件中。
阅读全文