首页 > 其他分享 >爬取贝壳网上的租房信息

爬取贝壳网上的租房信息

时间:2023-12-08 18:00:13浏览次数:27  
标签:租房 贝壳 -- list agent 爬取 num user div

首先说一下文件用到的库:

  1. time :提供了与时间相关的功能,如延时等。

  2. random :提供了生成随机数的功能,如生成随机整数、随机选择等。 

  3. requests :用于发送 HTTP 请求,可以用来获取网页内容。

  4. pandas :是一个数据处理和分析库,提供了高效的数据结构和数据分析工具,可以方便地对数据进行处理和分析。

  5. BeautifulSoup :是一个用于解析 HTML 和 XML 文件的库,可以方便地提取其中的数据。

  6.  faker :用于生成虚假数据,例如生成虚假的姓名、地址、电子邮件等。 这些库在爬虫开发中非常常用。

    time 和 random 可以用来控制爬虫的访问速度,避免对目标网站造成过大的负载。 requests 可以用来发送 HTTP 请求,获取网页内容。 pandas 可以用来处理和分析爬取到的数据。 BeautifulSoup 可以用来解析网页内容,提取其中的数据。 faker 可以用来生成虚假的数据,用于测试或模拟爬虫程序。

    分析 “贝壳网站” 页面

    第 1 页

    https://cq.zu.ke.com/zufang/pg1/#contentList

    第 2 页
    https://cq.zu.ke.com/zufang/pg2/#contentList
    第 3 页
    https://cq.zu.ke.com/zufang/pg3/#contentList
    … …
    … …
    第 n 页
    https://cq.zu.ke.com/zufang/pgn/#contentList

分析前端元素:

可发现目标在每个class为content__list--item的div中

首先获取此div:

zufangxinxis=soup.findAll('div', class_='content__list--item')

这串代码就是找到页面上所有class为content_list--item的div

继续分析在此div下面还有个class为content__list--item--main的div,下一步就是找到此div

for xinxi in zufangxinxis:
# CSS 选择器
    weizhi = soup.select("p[class='content__list--item--title'] a[class='twoline']")
    jiage = soup.select("span[class='content__list--item-price']")

 

 

 

 

 

还没写完,稍等……

 

 

 

 

 

 

 

 

 

 

 

 

 

 

完整代码:

import time
import random
import requests
import pandas as pd
from bs4 import BeautifulSoup
from faker import Factory
def get_user_agent(num):
    """
    生成不同的 user-agent
    :param num: 生成个数
    :return: list
    """
    factory = Factory.create()
    user_agent = []
    for i in range(num):
        user_agent.append({'User-Agent': factory.user_agent()})
    return user_agent
def get_proxy(pages, ua_num):
    #爬取数据,清洗整合
    headers = get_user_agent(ua_num)  # 请求头
    proxy_list = []  # 最后需入库保存的房源数据
    try:
        for num in range(0, pages):
            print('Start:第 %d 页请求' % (num + 1))
            # 请求路径
            url = 'https://cq.zu.ke.com/zufang/pg' + str(num + 1) + '/' + '#contentList'
            # url = 'https://cq.zu.ke.com/zufang/pg1' +'/' + '#contentList'
            # 随机延时(randint生成的随机数n: a <= n <= b ;random产生 0 到 1 之间的随机浮点数)
            time.sleep(random.randint(1, 2) + random.random())
            header_i = random.randint(0, len(headers) - 1)  # 随机获取1个请求头

            # BeautifulSoup 解析
            html = requests.get(url, headers=headers[header_i])
            soup = BeautifulSoup(html.text, 'lxml')
            # 获取所有 div 标签中 class 为 content__list--item--title 的元素
            zufangxinxis = soup.findAll('div', class_='content__list--item')
            for xinxi in zufangxinxis:
            # CSS 选择器
                weizhi = soup.select("p[class='content__list--item--title'] a[class='twoline']")
                jiage = soup.select("span[class='content__list--item-price']")
                for i, p in zip(weizhi, jiage):
                    i_jiagou = str(i.get_text())
                    i_jiege =  str(p.get_text())
                    flag = (i_jiagou,headers[header_i])
                    if flag:
                        p_xinxi=str(i_jiagou)
                        p_jiege=str(i_jiege)
                        proxy_list.append([p_xinxi,p_jiege])
            print('End:第 %d 页结束!==========================' % (num + 1))
    except Exception as e:
        print('程序 get_proxy 发生错误,Error:', e)

    finally:
        # 调用保存的方法
        write_proxy(proxy_list)

    return proxy_list
def write_proxy(proxy_list):
    """
    将清洗好的列表数据,保存到xlsx文件
    :param proxy_list: 房源信息数据列表
    :return: bool
    """
    date_now ='租房信息表'     # 名字
    flag = True    # 保存成功标志
    print('--- 开始保存 ---')
    try:
        df = pd.DataFrame(proxy_list,
                          columns=['房源信息','价格'])
        df.to_excel(date_now + '_proxy.xlsx', index=False)
        print('--- 保存成功!---')
    except Exception as e:
        print('--- 保存失败!---:', e)
        flag = False
    return flag
def main():
    """
    主方法
    """
    pa = input('请输入你想爬取的页数:')# 定义爬取页数
    pages =int(pa)
    ua = input('请输入你想生成user-agent个数:')# 定义需生成user-agent个数
    ua_num = int(ua)
    proxy_list = get_proxy(pages, ua_num)
    print(proxy_list)
if __name__ == '__main__':
    # 1.主方法
    main()

 

标签:租房,贝壳,--,list,agent,爬取,num,user,div
From: https://www.cnblogs.com/zhangzhang001/p/17888735.html

相关文章

  • Python爬取网页速度为什么那么快
    Python作为一门高效、易用的编程语言,其在网络爬虫方面也有着突出的表现。Python爬取网页的速度之所以那么快,主要归功于以下几个方面:一、简洁的代码Python语言相对于其他语言而言,代码量相对较少,且语法简单易懂,这让Python编写网络爬虫变得十分容易。通过Python的Requests库和Beautifu......
  • py通过链接爬取图片下载本地,提高数据自我掌握力
    (目录)前言不知道小伙伴们有没有一些困扰,一些数据以图片的形式存放在互联网上,我们想要使用图片里面的数据还需要自己的提取,然后经过一系列的整理之后才会达到我们想要的效果,而且整理数据还好,关键是难道这些图片真的需要我们自己一张一张的慢慢的右键,保存图片吗,那未免这样的效率......
  • Python爬取某电商平台商品数据及评论!
    前言随着互联网的发展,电商平台的出现让我们的消费更加便利,消费者可以在家里轻松地购买到各种商品。但有时候我们需要大量的商品数据进行分析,或者需要了解其他消费者的评价,这时候我们可以通过爬虫来获取数据。本文将介绍如何使用Python爬取某电商平台的商品数据及评论,并且用到代理ip......
  • Python使用多进程及代理ip爬取小说
    前言在爬虫的过程中,为了提高爬取速度,我们可以采用多进程、多线程、协程等方式。本文将介绍Python使用多进程进行爬取的方法,并结合代理IP爬取小说为例子,帮助读者了解如何使用Python多进程和代理IP来进行爬取,以提高爬取效率和规避反爬机制。一、使用多进程爬取小说多进程是一种并发编......
  • Python爬虫爬取wallhaven.cc图片
    话不多说,直接上代码!1importtime2importrandom3importuuid45fromlxmlimportetree6importos7importrequests8importthreading9fromqueueimportQueue10fromtqdmimporttqdm11fromconcurrent.futuresimportThreadPoolExecutor121......
  • 大学生租房平台的设计与实现-计算机毕业设计源码+LW文档
    第1章课题研究目的和意义1.1课题研究背景由于学习、工作等相关的需要,许多大学生选择在校外租赁房屋。早期通过关注学校周边的社区通知栏或者公告栏,进行手动的记录相关的住房信息比较费时费力,有可能几天下来,也找不到合适的房屋,这种房屋租赁管理模式具有很大的局限性,也已经远远不能......
  • scrapy爬取数据并保存中文
    通过前面的学习拿到数据问题不大,本帖是记录如何保存到文件以及保存成中文的操作。1,bqb.py爬虫文件实例代码'''---------------------------------#@Date:2023-10-2516:39:05#@Author:Devin#@LastModified:2023-11-2716:26:06-----------------------------------......
  • python+playwright爬取招聘网站
    一、简介:以获取智联招聘网北京、上海、广州、深圳的“数据分析”相关岗位的招聘信息为例,以下是效果实现。二、流程及代码实现(一)playwright模块安装或者在cmd中输入命令pipinstallplaywright安装完成后还需要安装playwright的浏览器驱动在cmd中输入命令playwrightinstall,等待即可......
  • 豆瓣电影top250爬取
     <aclass="answer-item_3Zrp6cos-text-body-lgcos-color-bg"href="https://m.baidu.com/sf?atn=index&lid=0&pd=topone_multi&top=%7B%22sfhs%22%3A1%7D&type=cpage&word=%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1top250&key=1v......
  • 【RPA学习天地】RPA爬取网页数据典型案例解析——芯片价格查询记录自动化
    关于RPA学习天地www.rpa-learning.comRPA学习天地致力于各大主流RPA厂商的产品使用培训,自2021年起,我们推出了各类RPA开发者培训课程,两年的时间已经为超过千位的RPA学员的成长保驾护航,学员成员涵盖金融、制造业、电商与零售业、物流业以及高科技行业等领域。RPA学习天地始终紧跟行业......