爬取贝壳找房数据

本文详细介绍了如何利用Python进行网络爬虫,针对贝壳找房网站进行数据抓取。从设置请求头到解析HTML,再到数据存储,一步步揭示了爬取房产信息的全过程。通过实际操作,读者将掌握网络爬虫的基本技巧并能应用于类似的数据获取任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from bs4 import BeautifulSoup
import requests
import time
import random
import csv
import pandas as pd
import numpy as np
from pandas import Series,DataFrame


def get_html(url):
    user_agent = [
        "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
        "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
        "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
        "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko",
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
    ]  # 游览器头部信息

    #  代理IP
    proxies = [
        "http://175.44.108.161:9999",
        "http://191.241.34.210:8080",
        "http://122.4.50.96:9999",
        "http://175.42.123.222:9999",
        'http://119.108.165.8:9000',
        'http://183.166.111.202:9999',
        'http://113.120.32.246:9999',
        'http://113.120.36.25:9999',
        'http://110.243.2.233:9999',
        'http://123.55.106.215:9999',
        'http://223.242.224.4:9999',
        'http://182.32.231.5:9999',
        'http://125.108.83.188:9000',
        'http://123.101.64.67:9999'
    ]

    res = requests.get(url, headers={
   "User-Agent": random.choice(user_agent)},
                       proxies={
   "http": random.choice(proxies)})  # 3-访问网址和添加访问游览器时的头部信息
    res.encoding = 'utf-8'  # 设置编码
    return res


# ### 获取租房链接

def main(start, end):
    for i 
### 使用 Python 虫抓取贝壳数据 #### 准备工作 为了成功抓取贝壳的新数据,需先安装必要的库。这包括 `requests` 用于发送 HTTP 请求,`BeautifulSoup` 或者 `lxml` 解析 HTML 文档,还有可能需要用到 `Selenium` 来处理 JavaScript 渲染页面的情况。 ```bash pip install requests beautifulsoup4 lxml selenium scrapy pandas ``` #### 创建 Scrapy 项目 Scrapy 是一个强大的虫框架,适合构建复杂的网络虫应用。创建一个新的 Scrapy 项目并进入该项目文件夹: ```bash scrapy startproject beike_new_houses cd beike_new_houses ``` #### 编写 Spider 文件 在 Spiders 文件夹内新建 spider 脚本,定义起始 URL 及解析函数。这里假设目标是从贝壳网获取新列表页的信息。 ```python import scrapy from ..items import BeikeNewItem class NewHousesSpider(scrapy.Spider): name = 'newhouses' allowed_domains = ['ke.com'] start_urls = [ 'https://bj.ke.com/newhouse/' ] def parse(self, response): houses = response.css('ul.resblock-list-wrapper li') for house in houses: item = BeikeNewItem() item['title'] = house.xpath('.//div[@class="resblock-name"]/a/text()').get().strip() item['price'] = house.css('span.number::text').get() yield item next_page = response.css('a.next::attr(href)').get() if next_page is not None: yield response.follow(next_page, callback=parse) ``` 此段代码会遍历每一页新列表,并提取每个子的名字和价格信息[^1]。 #### 定义 Item 类型 编辑 items.py 添加自定义的数据模型类表示要保存的数据字段。 ```python import scrapy class BeikeNewItem(scrapy.Item): title = scrapy.Field() price = scrapy.Field() ``` #### 运行虫 最后,在终端执行命令启动虫: ```bash scrapy crawl newhouses -o output.json ``` 上述指令将会把所有收集到的子信息存储在一个 JSON 文件中名为 `output.json`[^3]。 #### 数据清洗与分析 一旦获得了原始数据之后,可以借助 Pandas 库来进行进一步的数据清理、转换以及可视化展示等工作。 ```python import pandas as pd data = pd.read_json('output.json') print(data.head()) ``` 这样就可以查看前几条记录的内容了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值