当前位置: 首页 > news >正文

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

一、相关网站

二、相关代码

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):# 这里可以根据实际情况编写验证规则# 例如,简单地检查长度大于0return 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})

三、获取结果

版权声明和免责声明

本博客提供的所有爬虫代码和相关内容(以下简称“内容”)仅供参考和学习之用。任何使用或依赖这些内容的风险均由使用者自行承担。我(博客所有者)不对因使用这些内容而产生的任何直接或间接损失承担责任。

严禁将本博客提供的爬虫代码用于任何违法、不道德或侵犯第三方权益的活动。使用者应当遵守所有适用的法律法规,包括但不限于数据保护法、隐私权法和知识产权法。

如果您选择使用本博客的爬虫代码,您应当确保您的使用行为符合所有相关法律法规,并且不会损害任何人的合法权益。在任何情况下,我(博客所有者)均不对您的行为负责。

如果您对本声明有任何疑问,或者需要进一步的澄清,请通过我的联系方式与我联系。

相关文章:

  • Gitea相关漏洞
  • 【深入理解设计模式】命令设计模式
  • Linux应用程序对异步通知的处理
  • 算法时空复杂度分析:大O表示法
  • print()大揭秘:如何用Python打印出多样字符
  • 4G安卓核心板T310_紫光展锐平台方案
  • MYSQL--JSON_OBJECT 和 JSON_ARRAYAGG
  • Qt控制台项目也能使用opencv的imshow来显示摄像头视频
  • Playwright中page.locator快速查找网页元素和对象交互操作
  • Python刘诗诗
  • 使用axios时,函数内的this代表什么?
  • 【git】常用操作
  • MySQL中的视图
  • iOS runtime理解和应用场景
  • 前端性能基础测试研究
  • 【391天】每日项目总结系列128(2018.03.03)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CentOS7简单部署NFS
  • CSS实用技巧
  • Django 博客开发教程 8 - 博客文章详情页
  • HTML5新特性总结
  • HTTP 简介
  • HTTP--网络协议分层,http历史(二)
  • javascript 哈希表
  • JavaScript中的对象个人分享
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Lsb图片隐写
  • MySQL主从复制读写分离及奇怪的问题
  • PAT A1017 优先队列
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SQLServer之创建显式事务
  • TypeScript实现数据结构(一)栈,队列,链表
  • windows下使用nginx调试简介
  • 彻底搞懂浏览器Event-loop
  • 马上搞懂 GeoJSON
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 线上 python http server profile 实践
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #NOIP 2014# day.2 T2 寻找道路
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (70min)字节暑假实习二面(已挂)
  • (C++)八皇后问题
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (接口自动化)Python3操作MySQL数据库
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET : 在VS2008中计算代码度量值
  • .Net Core 中间件验签
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!