爬虫练习:获取某网站的房价信息

一、相关网站

二、相关代码

python 复制代码
import requests
from lxml import etree
import csv
with open('房天下数据.csv', 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['名称', '地点','价格','总价','联系电话']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for page in range(1,33):
        response = requests.get(f'https://newhouse.fang.com/house/s/b9{page}/')
        result = etree.HTML(response.text)
        names = [name.strip() for name in result.xpath('//div[@class="nlcd_name"]/a/text()')]
        addreses = result.xpath('//div[@class="address"]/a/@title')
        prices = [price.xpath('string(.)').strip() for price in result.xpath('//div[@class="nhouse_price"]')]
        total_prices = result.xpath('//p[@class="zj_price"]/text()')
        phone_texts = result.xpath('//div[@class="tel"]/p/text()')
        # 定义一个函数用于检查电话号码是否有效(这里仅作为示例,您可以根据实际需求定义有效性)
        def is_valid_phone_number(phone_number):
            # 这里可以根据实际情况编写验证规则
            # 例如,简单地检查长度大于0
            return bool(phone_number.strip())
        # 合并电话号码和分机号,并用'转'连接
        phones = ['{}转{}'.format(phone_texts[i].strip(), phone_texts[i+1].strip())
                           if is_valid_phone_number(phone_texts[i]) and is_valid_phone_number(phone_texts[i+1])
                           else "NAN"
                           for i in range(0, len(phone_texts)-1, 2)]
        # print(names,addreses,prices,total_prices,phones)
        for nam,add,pri,topr,pho in zip(names,addreses,prices,total_prices,phones):
            print(f'{nam} ====== {add} ====== {pri} ====== {topr} ===== {pho}')
            writer.writerow({'名称': nam, '地点': add,'价格':pri,'总价':topr,'联系电话':pho})

三、获取结果

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 版权声明和免责声明 本博客提供的所有爬虫代码和相关内容(以下简称"内容")仅供参考和学习之用。任何使用或依赖这些内容的风险均由使用者自行承担。我(博客所有者)不对因使用这些内容而产生的任何直接或间接损失承担责任。 严禁将本博客提供的爬虫代码用于任何违法、不道德或侵犯第三方权益的活动。使用者应当遵守所有适用的法律法规,包括但不限于数据保护法、隐私权法和知识产权法。 如果您选择使用本博客的爬虫代码,您应当确保您的使用行为符合所有相关法律法规,并且不会损害任何人的合法权益。在任何情况下,我(博客所有者)均不对您的行为负责。 如果您对本声明有任何疑问,或者需要进一步的澄清,请通过我的联系方式与我联系。 |

相关推荐
ytttr8734 小时前
隐马尔可夫模型(HMM)MATLAB实现范例
开发语言·算法·matlab
天远Date Lab4 小时前
Python实战:对接天远数据手机号码归属地API,实现精准用户分群与本地化运营
大数据·开发语言·python
listhi5204 小时前
基于Gabor纹理特征与K-means聚类的图像分割(Matlab实现)
开发语言·matlab
qq_433776424 小时前
【无标题】
开发语言·php
Caco.D5 小时前
Aneiang.Pa.News:属于你自己的全平台热点聚合阅读器
爬虫·asp.net·aneiang.pa·热榜新闻
会周易的程序员5 小时前
多模态AI 基于工业级编译技术的PLC数据结构解析与映射工具
数据结构·c++·人工智能·单例模式·信息可视化·架构
Davina_yu5 小时前
Windows 下升级 R 语言至最新版
开发语言·windows·r语言
阿珊和她的猫5 小时前
IIFE:JavaScript 中的立即调用函数表达式
开发语言·javascript·状态模式
listhi5205 小时前
卷积码编码和维特比译码的MATLAB仿真程序
开发语言·matlab
yuan199976 小时前
基于主成分分析(PCA)的故障诊断MATLAB仿真
开发语言·matlab