python 爬取杭州小区挂牌均价

在这里插入图片描述

下载chrome驱动

通过chrome浏览器的 设置-帮助-关于Google Chrome 查看你所使用的Chrome版本
在这里插入图片描述

驱动可以从这两个地方找:

  • 【推荐】https://storage.googleapis.com/chrome-for-testing-public
  • http://npm.taobao.org/mirrors/chromedriver
import zipfile
import os
import requestsdef un_zip(file_name, to_dir='./'):"""unzip zip file"""zip_file = zipfile.ZipFile(file_name)if os.path.isdir(to_dir):passelse:os.mkdir(to_dir)for names in zip_file.namelist():zip_file.extract(names, to_dir)zip_file.close()def download_driver(url=None, to_dir='./', version=''):print('install chrome-driver first')if not url:url = 'http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE'if len(version)>0:url = 'http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE_'+versionversion = requests.get(url).content.decode('utf8')driver_file = 'http://npm.taobao.org/mirrors/chromedriver/' + version + '/chromedriver_win32.zip'else:driver_file = urlr = requests.get(driver_file)download_zip = "chromedriver_win32.zip"with open(download_zip, "wb") as code:code.write(r.content)un_zip(download_zip,  to_dir)# os.remove(download_zip)print('done')download_driver(url='https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.58/win64/chromedriver-win64.zip', to_dir='./', version='')

数据库交互

把抓取的数据保存到数据库,sqlite数据库是一个db文件,可以用DBeaver工具打开,很方便

import sqlite3class DBC:def __init__(self, dbname):self.db = dbnameself.conn = Nonedef __enter__(self):self.conn = sqlite3.connect(self.db)return self.conndef __exit__(self, exc_type, exc_val, exc_tb):if exc_type is not None:self.conn.rollback()print("rollback")print(exc_type, exc_val, exc_tb)else:self.conn.commit()self.conn.close()def insert2db(data):with DBC('anjuke.db') as conn:cur = conn.cursor()cur.executemany("""insert into anjuke(community_name,year,address, tags, price, if_down, percent) values(?,?,?,?,?,?,?)""", data) with DBC('anjuke.db') as conn:cur = conn.cursor()cur.execute("""drop table if exists anjuke""")cur.execute("""create table if not exists anjuke(id INTEGER primary key  AUTOINCREMENT not null,community_name TEXT,year TEXT,address TEXT,tags TEXT,price TEXT,if_down BOOL,percent TEXT)""")

selenium 爪巴虫

import time
import traceback
from selenium import webdriverbrowser = webdriver.Chrome()
def process(url):browser.get(url)html = browser.page_sourcehtml = BeautifulSoup(html,)As = html.find_all("a", {"class": "li-row"})if len(As) == 0:raise Exception("EMPTY")data = []for A in As:price = A.find("div", {"class": "li-side"})price_value = price.find("div", {"class": "community-price"})if price_value:price_value = price_value.text.strip()minus = price.find("span")if minus:minus = 'propor-green' in minus.attrs['class']percent = price.find("span")if percent:percent = percent.text.strip()info = A.find("div", {"class": "li-info"})community_name = info.find("div", {"class": "nowrap-min li-community-title"}).textyear = info.find("span", {"class": "year"})if year:year = year.textadvantage =info.find("div", {"class":"prop-tags"})if advantage:advantage = advantage.text.strip()address = info.find("div", {"class": "props nowrap"}).find_all("span")[-1].textdata.append((community_name,year,address, advantage, price_value, minus, percent))insert2db(data)i = 0
while i < 50:  # 超过50显示重复数据i += 1url = f'https://hangzhou.anjuke.com/community/o8-p{i}'  # o2,o4,o6,o8不同排序条件print(url)try:process(url)except Exception as e:traceback.print_exc()s = input("check:")  # 抓取过程中,可能需要输入验证码i = i-1time.sleep(0.5)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/281905.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端面试拼图-知识广度

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录并添加部分可参考的文档&#xff0c;如下... 1. 移动端H5 click有300ms延迟&#xff0c; 如何解决&#xff1f; 背景&#xff1a;double tap to zoom 移动端H5中的300ms点击延迟问题通常是由浏览…

【地图】腾讯地图 - InfoWindow 自定义信息窗口内容时,内容 html 嵌套混乱问题

目录 需求描述问题问题代码页面展示 解决原因解决办法解决代码页面展示 代码汇总注 需求描述 腾讯地图上画点位&#xff0c;点击点位展示弹框信息 问题 问题代码 // 打开弹框 openInfoWindow(position, content) {this.infoWindow new TMap.InfoWindow({map: this.map,posit…

当内外网的域名相同时,如何在外网解析同域名的网址

当内部网络和外部网络存在相同的域名&#xff0c;并且希望内部用户通过内部DNS服务器解析到外部网络上的该域名对应的公网IP地址时&#xff0c;需要在内部DNS服务器上采取一些特殊配置策略来实现这一目标。以下是一种通用的解决方案&#xff1a; 条件转发&#xff08;Condition…

初识GO语言

是由google公司推出的一门编程语言&#xff0c;12年推出的第一个版本 Go的特点 Go为什么能在最近的IT领域炙手可热 集python简洁&C语言的性能于一身 21世纪的C语言 顺应容器化时代的到来 区块链的崛起 学习一门编程语言可以划分为下面这三个步骤 安装 编译器 or 解…

使用华为云HECS服务器+nodejs开启web服务

简介: 在华为云HECS服务器上使用nodejs开启一个web服务。 目录 1.开通华为云服务器 2.远程登录 2.1 使用华为官方的网页工具登录 ​编辑 2.2 使用MobaXterm登录 3 安装node 3.1 下载 2. 配置环境变量 4. 安装express模块 5.开启外网访问 1.开通华为云服务器 这…

《大模型对齐方法》最新综述

源自&#xff1a;专知 “人工智能技术与咨询” 发布 大模型在人工智能领域取得了革命性的突破&#xff0c;但它们也可能带来潜在的担忧。为了解决这些担忧&#xff0c;引入了对齐技术&#xff0c;以使这些模型遵循人类的偏好和价值观。尽管过去一年取得了相当大的进展&#…

怎么做好独立站的SEO优化

随着全球贸易的蓬勃发展&#xff0c;越来越多的企业开始关注外贸市场&#xff0c;并将目光投向了外贸网站。然而&#xff0c;在竞争激烈的外贸市场中&#xff0c;如何写出吸引人的文章&#xff0c;以及如何优化网站以在搜索引擎中脱颖而出&#xff0c;成为了外贸独立网站必须面…

如何与手机共享笔记本电脑的互联网?这里提供详细步骤

这篇文章介绍了如何通过将手机变成Wi-Fi热点来与手机共享笔记本电脑的互联网连接。 如何共享笔记本电脑的互联网连接 你可以通过Wi-Fi或有线共享笔记本电脑的数据连接,具体取决于你的设置。 Windows Windows允许你通过ICS共享你的互联网连接。ICS,或称互联网连接共享,是W…

【Godot 4.2】常见几何图形、网格、刻度线点求取函数及原理总结

概述 本篇为ShapePoints静态函数库的补充和辅助文档。ShapePoints函数库是一个用于生成常见几何图形顶点数据&#xff08;PackedVector2Array&#xff09;的静态函数库。生成的数据可用于_draw和Line2D、Polygon2D等进行绘制和显示。因为不断地持续扩展&#xff0c;ShapePoint…

【创建进程】fork函数与写时拷贝

文章目录 fork函数fork如何返回两个值&#xff08;fork的工作原理&#xff09;如何解释父子进程相互输出printf 写时拷贝 fork函数 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 fork函…

LiveGBS流媒体平台GB/T28181功能-大屏播放上大屏支持轮巡播放分屏轮巡值守播放监控视频轮播大屏轮询播放轮播

LiveGBS支持-大屏播放上大屏支持轮巡播放分屏轮巡值守播放监控视频轮播大屏轮询播放轮播 1、轮播功能2、分屏展示3、选择轮播通道4、配置轮播间隔(秒)5、点击开始轮播6、轮播停止及全屏7、搭建GB28181视频直播平台 1、轮播功能 视频监控项目使用过程中&#xff0c;有时需要大屏…

Java 模拟Spring,实现IOC和AOP的核心(一)

在这里我要实现的是Spring的IOC和AOP的核心&#xff0c;而且有关IOC的实现&#xff0c;注解XML能混合使用&#xff01; 参考资料&#xff1a; IOC&#xff1a;控制反转&#xff08;Inversion of Control&#xff0c;缩写为IoC&#xff09;&#xff0c;是面向对象编程中的一种…

OpenLayers基础教程——使用WebGL加载海量数据(1)

1、前言 最近遇到一个问题&#xff1a;如何在OpenLayers中高效加载海量的场强点&#xff1f;由于项目中的一些要求&#xff0c;不能使用聚合的方法加载。一番搜索之后发现&#xff1a;OpenLayers中有一个WebGLPoints类&#xff0c;使用该类可以轻松应对几十万的数据量&#xf…

3D高斯泼溅的崛起

沉浸式媒体领域正在以前所未有的速度发展&#xff0c;其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景&#xff0c;并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。 在本文中&#xff0c;我们将通过与摄影测量和 NeRF 等前辈进…

【软考高项】十五、信息系统工程之系统集成

1、集成基础 定义&#xff1a;通过硬件平台、网络通信平台、数据库平台、工具平台、应用软件平台将各类资源有机、高效地集成到一起&#xff0c;形成一个完整的工作台面 基本原则包括:开放性、结构化、先进性和主流化 2、网络集成 包括&#xff1a;传输子系统、交换子系统、…

Google的MELON: 通过未定位图像重建精确3D模型的突破性算法

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

QML TextField 默认无法鼠标选中内容

1.import QtQuick.Controls 2.0 后的TextField默认无法选中内容如下图&#xff1a; 2.增加属性设置 selectByMouse: true 可以选中内容了 TextField{ selectByMouse: true text:"1234567890987654321" } 效果如下:

安装调试kotti_ai:AI+互联网企业级部署应用软件包@riscv+OpenKylin

先上结论&#xff1a;riscvOpenKylin可以安装pyramidkottikotti_ai 但是paddle_serving_client无法安装&#xff0c;项目的AI实现部分需要改用其它方法&#xff0c;比如onnx。最终onnx也没有装成&#xff0c;只好用飞桨自己的推理。 安装kotti pip install kotti 安装kotti和…

【Git】第一课:Git的介绍

简介 什么是Git? Git是一个开源的分布式版本控制系统&#xff0c;用于跟踪代码的改变和协同开发。它最初由Linus Torvalds为了管理Linux内核开发而创建&#xff0c;现已成为开源软件开发中最流行的版本控制系统&#xff0c;没有之一。Git允许多人同时在不同的分支上工作&…

将main打包成jar;idea打包main为jar包运行

将main打包成jar&#xff1b;idea打包main为jar包运行 适用场景&#xff1a;可以封装一些小工具。 配置jar Maven中添加 <packaging>jar</packaging>将其打包为jar。 设置运行入口main 编译jar 看到jar输出 运行效果&#xff1a; 其中&#xff0c;三方依赖也被…