爬取Q房二手房房源信息

时间:2024-12-18 07:00:57
from lxml import etree # 导入lxml解析库 import requests # 导入HTTP请求库,用于发送网络请求 import csv # 导入CSV库,用于读写CSV文件 import time # 导入时间库,用于在请求间添加延迟 # 定义爬虫主函数 def spider(): # 定义爬虫头部信息,模拟浏览器访问 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' } url_prefix = "https://shenzhen.qfang.com/sale/f" # 定义基础URL前缀 for page in range(1, 11): # 遍历所有页面,从第1页到第10页 url = url_prefix + str(page) # 构建完整URL html = requests.get(url, headers=headers) # 发送HTTP GET请求 time.sleep(2) # 等待2秒,避免请求过于频繁 selector = etree.HTML(html.text) # 解析HTML内容 house_list = selector.xpath('//*[@id="cycleListings"]/ul/li') # 使用XPath定位所有房屋信息 for house in house_list: # 遍历每个房屋信息 apartment = house.xpath('div[2]/div[1]/a/text()')[0] # 提取公寓名称 house_layout = house.xpath('div[2]/div[2]/p[1]/text()')[0] # 提取房屋布局 area = house.xpath('div[2]/div[2]/p[2]/text()')[0] # 提取面积 region = house.xpath('div[2]/div[4]/text()')[0] # 提取地区 item = [apartment, house_layout, area, region] # 构建数据项列表 cleaned_item = [i.replace('\r', '').replace('\n', '').replace(' ', '') for i in item] # 清理数据中的换行符和多余空格 data_writer(cleaned_item) # 写入CSV文件 print('正在抓取……', cleaned_item) # 打印当前抓取的数据项 # 将数据写入CSV文件的函数 def data_writer(item): with open('Q房-二手房.csv', 'a', # 打开CSV文件,'a'模式表示追加写入 encoding='utf-8', newline='') as csvfile: # 设置文件编码为utf-8,避免中文乱码 writer = csv.writer(csvfile) # 创建CSV写入器 writer.writerow(item) # 写入一行数据 if __name__ == '__main__': # 如果直接运行此脚本 spider() # 调用爬虫函数