爬虫【6】链家二手房信息和图片并保存到本地

Python爬虫抓取链家二手房数据 本节使用 Python 爬虫库完成链家二手房(https://bj.lianjia.com/ershoufang/rs/)房源信息抓取,包括楼层、区域、总价、单价等信息。在编写此程序的过程中,您将体会到 lxml 解析库的实际应用。 编写程序流程分析 打开链家网站后,第一步,确定网站是否为静态网站,通过在网页源码内搜索关键字的方法,可以确定其为静态网站;第二步,确定要抓取页面的 URL 规律,第三步,根据要抓取的数据确定 Xpath 表达式;最后一步,编写 Python 爬虫程序。 通过简单的分析可知 UR 阅读详情

爬虫【6】链家二手房信息和图片并保存到本地

爬虫回顾:

网页URL分析:

首先我们打开链家二手房的网站,选择二手房页面
在这里插入图片描述
可以看到url长这个样子,当然第一步是查看网页源代码看看是不是静态页面,如果是动态js加载的就要换方法了。
我们在获取url之后可以写这样的正则代码去匹配所有的二级页面url:

    def get_urls(self, html):
        """
        获取二级html标签
        """
        html = html.decode()
        pattern = re.compile('<a class="img" href="(.*?)" target="_blank" data-bl="list".*?</a>', re.S)
        urls = pattern.findall(html)
        while '<%=url%>' in urls:
            urls.remove('<%=url%>')
        return urls

之后我们需要再获取二级界面里的url
这里我们选择获取里面的名字,价格和图片,名字和价格写入到csv文件中,图片单独的保存到文件当中。
在这里插入图片描述
在这里插入图片描述
经过分析我们可以写出这样的匹配方式:

    def pattern_img(self, html):
        pattern = re.compile('<li data-src="(.*?)" data-size=".*?">', re.S)
        return pattern.findall(html)

    def pattern_html(self, html):
        html = html.decode()
        pattern = re.compile('<h1 class="main" title=".*?">(.*?)</h1>.*?<div class="price ">.*?>(.*?)</span>', re.S)
        info = pattern.findall(html)
        images = self.pattern_img(html)
        return info[0], images

保存文件

在这里插入图片描述
下面我们将房间信息和图片信息分别保存

    def save_image(self, name, images):
        directory = 'image/' + name
        if not os.path.exists(directory):
            os.makedirs(directory)
        i = 1
        for image in images:
            filename = directory + '/'+str(i)+'.jpg'
            html = self.get_html(image)
            with open(filename, 'wb') as f:
                f.write(html)
            time.sleep(random.randint(2, 3))
            i += 1
    def write_csv(self, info):
        """
        将内容保存到csv中
        """
        L = []
        with open('house.csv', 'a') as f:
            writer = csv.writer(f)
            name = info[0]
            price = info[1] + '万'
            L.append((name, price))
            print(name, price)
            writer.writerows(L)

完整代码

"""
二手房信息爬取
"""
from urllib import request, parse
from fake_useragent import UserAgent
import os, re, csv
import random, time


class HouseSpider:
    def __init__(self):
        self.url = 'https://bj.lianjia.com/ershoufang/'

    def get_html(self, url):
        """
        获取html页面信息
        """
        headers = self.get_headers()
        res = request.Request(url, headers=headers)
        req = request.urlopen(res)
        html = req.read()
        return html

    def get_headers(self):
        """
        获取随机的headers
        """
        ua = UserAgent()
        headers = {'User-Agent': ua.random}
        return headers

    def get_urls(self, html):
        """
        获取二级html标签
        """
        html = html.decode()
        pattern = re.compile('<a class="img" href="(.*?)" target="_blank" data-bl="list".*?</a>', re.S)
        urls = pattern.findall(html)
        while '<%=url%>' in urls:
            urls.remove('<%=url%>')
        return urls

    def pattern_img(self, html):
        pattern = re.compile('<li data-src="(.*?)" data-size=".*?">', re.S)
        return pattern.findall(html)

    def pattern_html(self, html):
        html = html.decode()
        pattern = re.compile('<h1 class="main" title=".*?">(.*?)</h1>.*?<div class="price ">.*?>(.*?)</span>', re.S)
        info = pattern.findall(html)
        images = self.pattern_img(html)
        return info[0], images

    def write_csv(self, info):
        """
        将内容保存到csv中
        """
        L = []
        with open('house.csv', 'a') as f:
            writer = csv.writer(f)
            name = info[0]
            price = info[1] + '万'
            L.append((name, price))
            print(name, price)
            writer.writerows(L)

    def save_image(self, name, images):
        directory = 'image/' + name
        if not os.path.exists(directory):
            os.makedirs(directory)
        i = 1
        for image in images:
            filename = directory + '/'+str(i)+'.jpg'
            html = self.get_html(image)
            with open(filename, 'wb') as f:
                f.write(html)
            time.sleep(random.randint(2, 3))
            i += 1

    def run(self):
        html = self.get_html(self.url)
        urls = self.get_urls(html)
        for url in urls:
            html = self.get_html(url)
            info, imgs = self.pattern_html(html)
            self.write_csv(info)
            self.save_image(info[0].replace(" ", ""), imgs)
            time.sleep(random.randint(9, 12))


if __name__ == '__main__':
    spider = HouseSpider()
    spider.run()

黏菌优化算法(SMA)详解:从生物智能到优化引擎 黏菌优化算法(SMA)是一种新型生物启发式优化算法,模拟多头绒泡菌的智能觅食行为。该算法包含接近食物、包围食物和抓取食物三个阶段,通过数学模型将生物行为转化为优化过程。SMA采用权重自适应机制和参数振荡模型实现探索与开发的平衡,具有参数简单、收敛性好等优势。算法可通过MATLAB/Python实现,并应用于函数优化、工程设计和神经网络训练等领域。研究表明SMA在求解复杂优化问题时表现优异,未来可通过混沌增强、混合策略等方式进一步提升性能。 阅读详情

相关推荐

同步整流buck电路图设计:手把手入门必看

从零开始拆解同步整流Buck电路图及其原理,手把手带你画出关键拓扑、选型MOSFET、分析续流路径。重点讲清占空比控制逻辑与体二极管导通损耗的规避方法,让buck电路图及其原理真正落地可调、稳定可靠。

weixin_33308579的博客 997

数据抓取与清洗——链家二手房信息及户型图的爬取

1.导入所需要的包 import requests import re from bs4 import BeautifulSoup import time from lxml import etree import pandas as pd 2.查看一下robots协议 res = requests.get("https://bj.lianjia.com/ershoufang/robots.txt") print(res.text) 3.选择城市和要爬取的页数 可以看到url的格式是: .

m0_53427580的博客 3576

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6947

爬取链家网租房图 使用ImagesPipeline保存图片

# 爬虫文件 # -*- coding: utf-8 -*- import scrapy import os from urllib import request from lianjia.items import LianjiaItem class LianjiaspiderSpider(scrapy.Spider): name = 'lianjiaSpider' ...

weixin_30709929的博客 263

【Qt笔记】1.VSCode搭建Qt运行环境

Qt6之后已经抛弃qmake,使用cmake。cmake相对qmake来说只有优点没有缺点。使用VSCode搭建完Qt的运行环境就能开开心心debug了.vscode需要使用的插件:2.Qt tools3.CMakec++插件可以不关注,缺啥都会提醒你.正常安装即可。

没有手牌的博客 2万+

深度学习 tesorflow2.0版本 入门第一章

为什么要学tensflow 深度学习发展迅猛 框架灵活 google开发 公司应用广泛 2.0更加灵活 后面会学习的项目 图像分类 房价预测 泰坦尼克号生存预测 文本分类 文本生成 机器翻译 核心部分 模型训练 tesorboard----> 查看模型训练进度 模型保存和部署 分布式训练-----> 加速训练速度,提升训练效率 TensorFlow常用库:Tfds, tfhub,tensor2tensor 多平台云端环境GPU:Goolgle cloud环境配置,AWS环境配置 kaggle平

weixin_46969441的博客 1238

python爬虫技术 爬取链家二手房信息 保存到本地

""" 爬取链家地址二手房信息 目标:爬取标题名称 地址 总价 """ import requests import urllib.request import urllib.parse import re # https://bd.lianjia.com/ershoufang/pg1/ url = "http://bd.lianjia.com/ershoufang/pg...

qq_40634396的博客 886

【新版系统架构】系统架构设计师教程全篇知识点提炼

信息系统的5个基本功能:输入、存储、处理、输出和控制信息系统的发展:诺兰模型:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段、成熟阶段信息系统的分类:传统的信息系统分为:业务(数据)处理系统、管理信息系统(MIS)、决策支持系统(DSS)、专家系统(ES)、办公自动化系统(OAS)等5类信息系统的生命周期:1、产生阶段2、开发阶段(总体规划、系统分析、系统设计、系统实施、系统验收阶段)3、运行阶段4、消亡阶段信息系统建设原则:1、高层管理人员介入原则。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 1万+

链家二手房爬取保存到excel中

​今天呢,我来爬取一下链家,拿到一些数据,方便后面进行数据分析。 首先,打开主页: 观察网页信息,发现不是Ajax请求,就是一个简单的获取就行了。 我们开始办事情: 可以看到,这段信息在源码中是这样的。 请求状态码是200,证明请求成功了。 我们现在来获取数据 已经把数据爬取下来了。 我们要把图上的数据都爬取下来,保存到本地 代码走: import requests from lxml ...

Michaelyu的博客 1299

文末含资料链接和视频讲解!YOLOv8集成CoordAtt注意力机制详细教程

本文详细介绍了如何在YOLOv8目标检测框架中集成CoordAtt注意力机制。首先解析了CoordAtt的工作原理,它通过分解式池化将位置信息嵌入到通道注意力中,相比传统注意力机制具有更好的空间信息保持能力。然后提供了PyTorch实现代码解析,包括自适应平均池化、Hard-Swish激活函数等关键实现细节。最后概述了YOLOv8架构,为后续集成CoordAtt提供基础。该教程适合具备深度学习基础的开发者,将理论与实践结合,帮助读者掌握这一目标检测优化技术。

FJN110的博客 266

基于STM32L4XX、HAL库的 ATGM336H GPS定位模块驱动程序设计

/ 转换为km/h。// 定位状态: 0=无效, 1=GPS定位, 2=差分定位。// GPS解析数据。支持GPS/BeiDou/GLONASS/Galileo/QZSS多系统联合定位。// 回调函数(需要在HAL_UART_RxCpltCallback中调用)// 地面速度(km/h)// 海拔高度(m)

zhusl6688的博客 794

python+selenium爬取链家网房源信息并保存至csv

python+selenium爬取链家网房源信息并保存至csv 抓取的信息有:房源’, ‘详细信息’, ‘价格’,‘楼层’, '有无电梯 import csv from selenium import webdriver import time from selenium.webdriver.common.by import By from selenium.webdriver.support i...

broccoli2的博客 2066

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

Qoder AI 编程工具从部署到深度使用实战详解

congge 8345

基于Scrapy的链家二手房爬虫

摘要 本项目是python课程的期末练手项目,在简要学习完python和爬虫相关的Scrapy框架后,基于这两者的运用最终完成了对于链家网站二手房页面的信息进行爬取,并将爬取的数据存放于MongoDB之中,使用Studio 3T进行查看。 1引言 1.1背景 在本学期的python课程中,通过网课粗略的掌握了python的基础知识之后,老师提出通过运用python的模块进行附加的学习,于是我选择了Scrapy框架的学习,由此为基础对于链家网站的信息进行了爬取数据的操作,并将爬取的数据保存。 1.2意义 这个

zero8989的博客 2698

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

爬虫实例:链家二手房数据爬取

​ 需求:根据用户所选省份及城市爬取对应的二手房数据及图片,并将数据保存到excel中,图片保存到文件夹中,得到的数值类型的单价、总价和关注度,并画出单价与关注度,总价与关注度的图像,并找出关注度最高的二手房单价和总价。

bagell的博客 5337

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python爬虫实战:爬取链家网二手房数据

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 买房装修,是每个人都要经历的重要事情之一。相对于新房交易市场来说,如今的二手房交易市场一点也不逊色,很多二手房的信息刚刚挂出来,就被其他购房者拿下了。 项目目标 爬取链家网二手房信息 受害者地址 https://cs.lianjia.com/ershoufang/pg%7B%7D/ 基本环境配置 python 3.6 pycharm 代码 导入工具 ...

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【爬虫实战】01利用python爬虫并进行数据分析(链家 爬虫)

爬虫实战01——利用python爬虫并进行数据分析 爬取链家二手房相关信息并进行数据分析 {https://sh.lianjia.com/ershoufang/pg} 一、爬虫部分 背景 需求来源于生活 大数据时代来临,数据就是核心,数据就是生产力,越来越多的企业开始注重收集用户数据,而爬虫技术是收集数据的一种重要手段 python版本:3.6.5 ,系统环境是windows, 工具包:requ...

1万+

爬虫三:用xpath爬取链家网二手房信息

爬虫流程 发起请求,通过使用HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,并等待服务器响应。 获取响应内容如果服务器能正常响应,则会得到一个Response,Response的内容就是所要获取的页面内容,其中会包含:html,json,图片,视频等。 解析内容得到的内容可能是html数据,可以使用正则表达式、第三方解析库如Beautifu...

2720

Scrapy爬虫:链家全国各省城市房屋数据批量爬取,别再为房屋发愁!

:点击上方[Python爬虫数据分析挖掘]→右上角[...]→[设为星标⭐]文章目录1、前言2、基本环境搭建3、代码注释分析3、图片辅助分析4、完整代码5、运行结果1、前言本文爬取的是链...

公众号:Python研究者 3598

爬虫实战:从链家网爬取数据

学习python已经很久了,从各个大牛的技术博客中获益良多。现在也想把自己的小小收获公开一下,以方便大家学习python,让python更加普及的应用。下面我准备写一个爬虫实例:从链家网爬取福田区二手房的数据。 环境: win10专业版 python3.6(需要使用模块BeatifulSoup;pandas;Selector;time;re) Office2013 背景知识: Xpat

氤氲紫镜的空间 3万+

爬虫实例:爬取二手房数据

​ 需求:根据用户所选省份及城市爬取对应的二手房数据及图片,并将数据保存到excel中,图片保存到文件夹中,得到的数值类型的单价、总价和关注度,并画出单价与关注度,总价与关注度的图像,并找出关注度最高的二手房单价和总价。

m0_73614183的博客 3029

链家网二手房数据爬虫项目分享

本文分享了一个基于Python的链家网二手房数据爬虫项目。该项目使用lxml库进行xpath解析,实现多线程并发爬取,支持反爬处理和异常优化。采集字段包括标题、价格、小区等12项信息,提供CSV和MySQL两种存储方式。文章详细分析了网页结构、数据提取方法,并给出完整的代码实现,包括URL生成、页面解析、数据存储等功能模块。项目以西安市为例,通过修改参数可爬取其他城市数据,适合学习网页数据抓取技术的开发者参考。

熊百涛的博客 2793

python爬取链家二手房楼盘数据信息

前言 想看下最近房价是否能入手,抓取链家二手房、新房的信息,发现广州有些精装修88平米的3房2厅首付只要29万!平均1.1万/平: 查看请求信息 本次用的是火狐浏览器32.0配合firebug和httpfox使用,基于python3环境,前期步骤: 首先打开firefox浏览器,清除网页所有的历史纪录,这是为了防止以前的Cookie影响服务器返...

人生苦短, 还不用Python? 6056

python爬取二手房信息_使用Scrapy爬取链家二手房信息

目录必要条件:1.Python 2.7 / Python 2.7以上2. 安装Scarpy 、MySQLdb3. Mysql数据库项目说明:本项目基于Python Scrapy爬虫框架对lianjia房产交易网站二手房小区、小区在售房屋数据进行爬取。数据爬取为三级页面递归爬取,整个爬取流程如下:1. 搜索小区名,在结果页面中找到小区名,小区名的超链接为第一层链接2. 根据第一层链接,进入小区描述页...

weixin_39669701的博客 1424

链家二手房信息爬取

上一篇博客中介绍了爬虫前需要做的一些准备工作,今天我们就来进行一次实战演练----爬取链家二手房的房源信息。 1、获取请求头 首先我们来获取网站的请求头,不知道如何获取请求头的小伙伴请参考上一篇博客。下面就是我们获得的该网站的请求头: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebK...

A_D_I_D_A_S的博客 2139

爬虫练习三:爬取链家二手房信息

在坐地铁通勤的时候看到了一些售房广告,所以这次想要尝试爬取链家发布的各个城市二手房信息,并将其写入本地数据库 1. 网页查看 1)以北京为例 我们要访问的url是https://bj.lianjia.com/ershoufang/。 越过页面上方的筛选区域,就下来就是我们想要爬取的数据。 F12检查网页: a. 发现房屋的基本信息并不是通过异步加载来获取的,直接通过html代...

weixin_30390075的博客 1046
上一篇: Tensorflow2.0之自定义数据集
下一篇: 爬虫【7】 xpath解析
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值