什么猫猫最受欢迎?Python采集猫咪交易数据

本文介绍了如何使用Python进行网络数据采集,从猫猫交易网站抓取猫咪品种的详细信息,包括品种、价格、特征等,并将数据存储到CSV文件中。通过使用requests、lxml和tqdm库,实现了网页内容的解析和进度条的可视化,为后续的大规模数据采集提供了基础。

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

前言

在日常生活中,我们看到可爱的猫咪表情包,总是会忍不住收藏

认识的一些朋友也养了猫,比如橘猫、英短、加菲猫之类的

在这里插入图片描述

看他们发朋友圈撸猫,老羡慕了,猫咪真的太可爱啦。

你是不是也动过养猫猫的小心思呢~反正我是动过了

于是,网上闲逛的时候发现一个专门交易猫猫的网站—猫猫交易网

这不得采集20W+ 条猫猫数据,以此来了解一下可爱的猫咪。

python源码、教程、资料、解答: 点击此处跳转文末名片获取

数据获取

打开猫猫交易网,先采集猫咪品种数据,首页点击猫咪品种

这里打开页面可以看到猫猫品种列表:

但只显示了每种猫猫的品种名,参考价格,我们点进详情页,可以看到更加详细的数据:

品种名、参考价格、中文学名、基本信息、性格特点、生活习性、优缺点、喂养方法等。

检查网页,可以发现网页结构简单,容易解析和提取数据。

代码如下:

import requests
import re
import csv
from lxml import etree
from tqdm import tqdm
from fake_useragent import UserAgent

随机产生请求头

ua = UserAgent(verify_ssl=False, path='fake_useragent.json')
 
def random_ua():        # 用于随机切换请求头
    headers = {
   
        "Accept-Encoding": "gzip",
        "Accept-Language": "zh-CN",
        "Connection": "keep-alive",
        "Host": "www.maomijiaoyi.com",
        "User-Agent": ua.random
    }
    return headers

创建保存数据的csv

def create_csv():       
    with open('./data/cat_kind.csv', 'w', newline='', encoding='utf-8') as f:
        wr = csv.writer(f)
        wr.writerow(['品种', '参考价格', '中文学名', '别名', '祖先', '分布区域',
                     '原产地', '体型', '原始用途', '今日用途', '分组', '身高',
                     '体重', '寿命', '整体', '毛发', '颜色', '头部', '眼睛',
                     '耳朵', '鼻子', '尾巴', '胸部', '颈部', '前驱', '后驱',
                     '基本信息', 'FCI标准', '性格特点', '生活习性', '优点/缺点',
                     '喂养方法', '鉴别挑选'])

获取HTML网页源代码 返回文本

def scrape_page(url1):      
    response = requests.get(url1, headers=random_ua())
    # print(response.status_code)
    response.encoding = 'utf-8'
    return response.text

获取每个品种猫咪详情页url

def get_cat_urls(html1):   
    dom = etree.HTML(html1)
    lis = dom.xpath('//div[@class="pinzhong_left"]/a')
    cat_urls = []
    for li in lis:
        cat_url = li.xpath('./@href')[0]
        cat_url = 'http://*****' + cat_url
        cat_urls.append(cat_url)
    return cat_urls

采集每个品种猫咪详情页里的有关信息

def get_info(html2):    
    # 品种
    kind = re.findall('div class="line1">.*?<div class="name">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值