您当前的位置: 首页 >  Python

轻松学Python

暂无认证

  • 0浏览

    0关注

    317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python一键查看房价涨跌,进网站啥的太慢了!

轻松学Python 发布时间:2021-08-05 14:44:06 ,浏览量:0

全国的房价一直居高不下,经常各种波动,但是进网站一个个看的话,就太慢了,于是我用Python把房源信息直接爬下来,涨跌一下子就了解清楚了! 先给大家养养眼,然后开始学习。 在这里插入图片描述 很多小伙伴在学习过程中没有资料或者遇到问题没人解答啥的,导致学的很慢,可以直接加下这个群,下面的资料都可以找管理员获取点我加群 Python环境、pycharm编辑器/永久激活/翻译插件 python零基础视频教程 Python界面开发实战教程 Python爬虫实战教程 Python数据分析实战教程 python游戏开发实战教程 Python 电子书100本 统统免费领取 Python相关问题可解答 Python相关外包需求可发布 Python相关招聘需求可发布

OK ,我们开始今天的代码部分。

这要安装的模块

import requests  # 数据请求模块, 第三方模块  cookies池
import parsel # 第三方模块
import csv  # 内置模块

文件权限问题

for page in range(15, 30):
    print(f'\n====================正在抓取第{page}页数据=======================')

1、数据在的url地址是哪个

url = f'https://newhouse.fang.com/house/s/b9{page}/'

请求伪装, User-Agent代表浏览器的身份标识

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}

2、python代码发送指定地址的请求

result = requests.get(url=url, headers=headers)  # post put delete  ....

result.apparent_encoding 自动获取编码

result.encoding = 'gbk'  # result.encoding 指定对象的编码
    # print(result.request.headers)
    html_data = result.text  # result.text 获取对象里面的文本内容
    # print(html_data)  # utf-8 主流的摆那么格式  gbk  windows系统下编码的格式  字符串

3、数据解析(想要的数据提取) xpath + 正则 bs4 lxml

selector = parsel.Selector(html_data)  # 转换数据类型(对象)
    # print(selector)

    divs = selector.xpath('//div[@class="nl_con clearfix"]/ul/li[not(@style)]')  # 所有div标签

    for div in divs: # 二次提取的思路
        name = div.xpath('.//div[@class="nlcd_name"]/a/text()').get()  # 名字
        if name:
            name = name.strip()  # strip()  去除字符串两端的空格


        price = div.xpath('.//div[@class="nhouse_price"]/*/text()').getall()
        if price == None:  # = 代表赋值,  == 判断相等
            price = '暂未取得预售证 或者 价格待定'
        else:
            price = '|'.join(price)

        rooms = div.xpath('.//div[@class="house_type clearfix"]/a/text()').getall()
        rooms = '-'.join(rooms)

        area = div.xpath('.//div[@class="house_type clearfix"]/text()').re('[\d~平米]+')
        if area:
            area = area[0]
        else:
            area = 'None'

        address = div.xpath('.//div[@class="address"]/a/@title').get()
        sale = div.xpath('.//div[@class="fangyuan"]/span/text()').get()

        tel = div.xpath('.//div[@class="tel"]/p/text()').getall()

        if len(tel) > 1:
            tel = '转'.join(tel)
        else:
            tel = tel
        print(name, price, rooms, area, address, sale, tel)

4、数据保存 csv数据: 每条数据用 , 分割

with open('房天下.csv', mode='a', encoding='utf-8', newline='') as f:
            csv_write = csv.writer(f)
            csv_write.writerow([name, price, rooms, area, address, sale, tel])

效果展示 在这里插入图片描述 基本上整个城市的都给爬下来了,我这里只截取了一部分,大家可以换成自己想要了解的城市去爬一下试试!

关注
打赏
1663832040
查看更多评论
立即登录/注册

微信扫码登录

0.9489s