Python多线程爬取链家房源,保存表格,实现数据可视化分析!

这篇具有很好参考价值的文章主要介绍了Python多线程爬取链家房源,保存表格,实现数据可视化分析!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用Python来爬取二手房源数据,并保存表格,实现数据分析!

软件环境

Python 3.8

Pycharm

代码展示

模块

# 数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 解析数据模块 --> 第三方模块, 需要安装 pip install parsel
import parsel
# csv模块
import csv

 

创建文件

f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '小区',
    '区域',
    '售价',
    '单价',
    '户型',
    '面积',
    '朝向',
    '装修',
    '楼层',
    '年份',
    '建筑类型',
    '详情页',
])
csv_writer.writeheader()

 

发送请求, 模拟浏览器 对于 url地址 发送请求

模拟浏览器

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}

 

请求网址/网站

url = 'https://cs.lianjia.com/ershoufang/'

# 完整源码,视频讲解直接+这个扣裙:279199867 免费领取

 

发送请求

response = requests.get(url=url, headers=headers)
# <Response [200]> 响应对象 200 状态码 表示请求成功
print(response)

 

获取数据, 获取网页源代码 <获取服务器返回响应数据>

解析数据, 提取我们想要的数据内容

解析方法:

  • re: 对于字符串数据直接进行解析提取

  • css: 根据标签属性提取数据内容

  • xpath: 根据标签节点提取数据内容

使用css: 根据标签属性提取数据内容

把获取到html字符串数据, 转成可解析对象

selector = parsel.Selector(response.text)

 

获取所有房源信息所在li标签

lis = selector.css('.sellListContent li.clear')

 

for循环遍历

for li in lis:
    """
提取具体房源信息: 标题 / 价格 / 位置 / 户型... .title a --> 表示定位class类名为title下面a标签 """ title = li.css('.title a::text').get() # 标题 info_list = li.css('.positionInfo a::text').getall() area = info_list[0] # 小区名字 area_1 = info_list[1] # 地区 totalPrice = li.css('.totalPrice span::text').get() # 售价 unitPrice = li.css('.unitPrice span::text').get().replace('元/平', '').replace(',', '') # 单价 houseInfo = li.css('.houseInfo::text').get().split(' | ') # 信息 houseType = houseInfo[0] # 户型 houseArea = houseInfo[1].replace('平米', '') # 面积 houseFace = houseInfo[2] # 朝向 fitment = houseInfo[3] # 装修 fool = houseInfo[4] # 楼层 if len(houseInfo) == 7 and '' in houseInfo[5]: year = houseInfo[5].replace('年建', '') else: year = '' house = houseInfo[-1] # 建筑类型 href = li.css('.title a::attr(href)').get() # 详情页 dit = { '标题': title, '小区': area, '区域': area_1, '售价': totalPrice, '单价': unitPrice, '户型': houseType, '面积': houseArea, '朝向': houseFace, '装修': fitment, '楼层': fool, '年份': year, '建筑类型': house, '详情页': href, } csv_writer.writerow(dit) print(dit) # print(title, area, area_1, totalPrice, unitPrice, houseType, houseArea, houseFace, fitment, fool, year, house, href)

 

多线程

导入模块

import requests
import parsel
import re
import csv
# 线程池模块
import concurrent.futures
import time

 

发送请求函数

def get_response(html_url):

:param html_url:
:return:
"""
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
}
response = requests.get(url=html_url, headers=headers)
return response

 

获取数据函数

def get_content(html_url):
    """
    :param html_url:
    :return:
    """
    response = get_response(html_url)
    html_data = get_response(link).text
    selector = parsel.Selector(response.text)
    select = parsel.Selector(html_data)
    lis = selector.css('.sellListContent li')
    content_list = []
    for li in lis:

        title = li.css('.title a::text').get()  # 标题
        area = '-'.join(li.css('.positionInfo a::text').getall())  # 小区
        Price = li.css('.totalPrice span::text').get()  # 总价
        Price_1 = li.css('.unitPrice span::text').get().replace('元/平', '')  # 单价
        houseInfo = li.css('.houseInfo::text').get()  # 信息
        HouseType = houseInfo.split(' | ')[0]  # 户型
        HouseArea = houseInfo.split(' | ')[1].replace('平米', '')  # 面积
        direction = houseInfo.split(' | ')[2].replace(' ', '')  # 朝向
        renovation = houseInfo.split(' | ')[3]  # 装修
        floor_info = houseInfo.split(' | ')[4]
        floor = floor_info[:3]  # 楼层
        floor_num = re.findall('(\d+)层', floor_info)[0]  # 层数
        BuildingType = houseInfo.split(' | ')[-1]
        string = select.css('.comments div:nth-child(7) .comment_text::text').get()
        href = li.css('.title a::attr(href)').get()  # 详情页
        if len(houseInfo.split(' | ')) == 6:
            date = 'None'
        else:
            date = houseInfo.split(' | ')[5].replace('年建', '')  # 日期
        print(string)
        dit = {
            '标题': title,
            '内容': string,
            '小区': area,
            '总价': Price,
            '单价': Price_1,
            '户型': HouseType,
            '面积': HouseArea,
            '朝向': direction,
            '装修': renovation,
            '楼层': floor,
            '层数': floor_num,
            '建筑日期': date,
            '建筑类型': BuildingType,
            '详情页': href,
        }
        content_list.append(dit)
    return content_list

 

主函数

def main(page):
    """
    :param page:
    :return:
    """
    print(f'===============正在采集第{page}页的数据内容===============')
    url = f'https:///ershoufang/yuelu/p{page}/'
    content_list = get_content(html_url=url)
    for content in content_list:
        csv_writer.writerow(content)


if __name__ == '__main__':
    time_1 = time.time()
    link = 'http://******/article/149'
    # 创建文件
    f = open('data多线程.csv', mode='a', encoding='utf-8', newline='')
    csv_writer = csv.DictWriter(f, fieldnames=[
        '标题',
        '内容',
        '小区',
        '总价',
        '单价',
        '户型',
        '面积',
        '朝向',
        '装修',
        '楼层',
        '层数',
        '建筑日期',
        '建筑类型',
        '详情页',
    ])
    csv_writer.writeheader()

    # 线程池执行器 max_workers 最大线程数
    exe = concurrent.futures.ThreadPoolExecutor(max_workers=10)
    for page in range(1, 11):
        exe.submit(main, page)
    exe.shutdown()
    time_2 = time.time()
    use_time = int(time_2 - time_1)
    # 总计耗时: 9
    print('总计耗时:', use_time)

 文章来源地址https://www.toymoban.com/news/detail-445477.html

到了这里,关于Python多线程爬取链家房源,保存表格,实现数据可视化分析!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫之Scrapy框架系列(21)——重写媒体管道类实现保存图片名字自定义及多页爬取

    spider文件中要拿到图片列表并yield item; item里需要定义特殊的字段名:image_urls=scrapy.Field(); settings里设置IMAGES_STORE存储路径,如果路径不存在,系统会帮助我们创建; 使用默认管道则在s

    2024年02月10日
    浏览(36)
  • python爬取招聘网信息并保存为csv文件

    我们以猎聘网为例 一、打开网站查找信息 进入后搜索想要爬取的岗位信息,右键选择 “检查” 进入开发者界面 点击右上角的network,选择doc 然后点击图中的搜索按钮,输入想要爬取的岗位名称,然后刷新页面,选择搜索下边的第二个 这个时候我们看到有我们需要的url,从

    2024年02月09日
    浏览(30)
  • 【python】爬取知乎热榜Top50保存到Excel文件中【附源码】

    欢迎来到英杰社区 https://bbs.csdn.net/topics/617804998     这篇博客将介绍如何使用Python编写一个爬虫程序,从斗鱼直播网站上获取图片信息并保存到本地。我们将使用 request s 模块发送HTTP请求和接收响应,以及 os 模块处理文件和目录操作。         如果出现模块报错      

    2024年02月03日
    浏览(41)
  • 【python】爬取斗鱼直播照片保存到本地目录【附源码+文末免费送书】

    英杰社区 https://bbs.csdn.net/topics/617804998     这篇博客将介绍如何使用Python编写一个爬虫程序,从斗鱼直播网站上获取图片信息并保存到本地。我们将使用 request s 模块发送HTTP请求和接收响应,以及 os 模块处理文件和目录操作。         如果出现模块报错         进入控

    2024年02月04日
    浏览(28)
  • Python爬取读书网的图片链接和书名并保存在数据库中

    一个比较基础且常见的爬虫,写下来用于记录和巩固相关知识。 本项目采用 scrapy 框架进行爬取,需要提前安装 由于需要保存数据到数据库,因此需要下载 pymysql 进行数据库相关的操作 同时在数据库中创立对应的表 在终端进入准备存放项目的文件夹中 1、创建项目 创建成功

    2024年02月06日
    浏览(31)
  • Python吉林长春二手房源爬虫数据可视化系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年04月28日
    浏览(34)
  • Python爬虫入门之2022软科中国大学排名爬取保存到csv文件

    1、获得“2022软科中国大学排名”数据,从【软科排名】2022年最新软科中国大学排名|中国最好大学排名网页中获得排名数据信息,并将数据保存到csv文件中。 2、调用两个CSV文件,将他们合成一个文件,并按排名先后对其进行排序 3、将合并文件储存为txt文件和json文件 我们采

    2024年02月07日
    浏览(40)
  • (十五)python网络爬虫(理论+实战)——实战:eastmoney沪深京A股股票数据爬取,表格解析

    目录 7 爬取沪深京A股股票数据       7.1 爬取目标

    2023年04月22日
    浏览(32)
  • 简单的用Python采集股票数据,保存表格后分析历史数据

    字节跳动如果上市,那么钟老板将成为我国第一个世界首富 趁着现在还没上市,咱们提前学习一下用Python分析股票历史数据,抱住粗大腿坐等起飞~ 好了话不多说,我们直接开始正文 环境使用 Python 3.10 解释器 Pycharm 编辑器 模块使用 requests — 数据请求模块 csv - 保存csv表格

    2024年02月05日
    浏览(51)
  • Python上海二手房源爬虫数据可视化分析大屏全屏系统设计与实现 开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包