爬虫源码---爬取小猫猫交易网站

news/2024/7/19 11:05:31 标签: 爬虫, python, beautifulsoup

前言:

本片文章主要对爬虫爬取网页数据来进行一个简单的解答,对与其中的数据来进行一个爬取。

一:环境配置

Python版本:3.7.3

IDE:PyCharm

所需库:requests ,parsel 

二:网站页面

我们需要获取以下数据:

'地区', '店名', '标题', '价格', '浏览次数', '卖家承诺', '在售只数',
'年龄', '品种', '预防', '联系人', '联系方式', '异地运费', '是否纯种',
'猫咪性别', '驱虫情况', '能否视频', '详情页'

三:具体代码实现 

# _*_ coding : utf-8 _*_
# @Time : 2023/9/3 23:03
# @Author : HYT
# @File : 猫
# @Project : 爬虫教程
import requests
import parsel
import csv
url ='http://www.maomijiaoyi.com/index.php?/list_0_78_0_0_0_0.html'

headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
    }
response = requests.get(url=url, headers=headers)
selector = parsel.Selector(response.text)
href = selector.css('div.content:nth-child(1) a::attr(href)').getall()
areas = selector.css('div.content:nth-child(1) a .area span.color_333::text').getall()
areas = [i.strip() for i in areas]
zip_data = zip(href, areas)
for index in zip_data:
        # http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_546549.html
        index_url = 'http://www.maomijiaoyi.com' + index[0]
        response_1 = requests.get(url=index_url, headers=headers)
        selector_1 = parsel.Selector(response_1.text)
        area = index[1]  # 地区
        shop = selector_1.css('.dinming::text').get().strip()  # 店名
        title = selector_1.css('.detail_text .title::text').get().strip()  # 标题
        price = selector_1.css('span.red.size_24::text').get()  # 价格
        views = selector_1.css('.info1 span:nth-child(4)::text').get()  # 浏览次数
        promise = selector_1.css('.info1 div:nth-child(2) span::text').get().replace('卖家承诺: ', '')  # 卖家承诺
        sale = selector_1.css('.info2 div:nth-child(1) div.red::text').get()  # 在售
        age = selector_1.css('.info2 div:nth-child(2) div.red::text').get()  # 年龄
        breed = selector_1.css('.info2 div:nth-child(3) div.red::text').get()  # 品种
        safe = selector_1.css('.info2 div:nth-child(4) div.red::text').get()  # 预防
        people = selector_1.css('div.detail_text .user_info div:nth-child(1) .c333::text').get()  # 联系人
        phone = selector_1.css('div.detail_text .user_info div:nth-child(2) .c333::text').get()  # 联系方式
        fare = selector_1.css('div.detail_text .user_info div:nth-child(3) .c333::text').get().strip()  # 异地运费
        purebred = selector_1.css(
            '.xinxi_neirong div:nth-child(1) .item_neirong div:nth-child(1) .c333::text').get().strip()  # 是否纯种
        sex = selector_1.css(
            '.xinxi_neirong div:nth-child(1) .item_neirong div:nth-child(4) .c333::text').get().strip()  # 猫咪性别
        worming = selector_1.css(
            '.xinxi_neirong div:nth-child(2) .item_neirong div:nth-child(2) .c333::text').get().strip()  # 驱虫情况
        video = selector_1.css(
            '.xinxi_neirong div:nth-child(2) .item_neirong div:nth-child(4) .c333::text').get().strip()  # 能否视频
        dit = {
            '地区': area,
            '店名': shop,
            '标题': title,
            '价格': price,
            '浏览次数': views,
            '卖家承诺': promise,
            '在售只数': sale,
            '年龄': age,
            '品种': breed,
            '预防': safe,
            '联系人': people,
            '联系方式': phone,
            '异地运费': fare,
            '是否纯种': purebred,
            '猫咪性别': sex,
            '驱虫情况': worming,
            '能否视频': video,
            '详情页': index_url,
        }
        print(area, shop, title, price, views, promise, sale, age, breed,
              safe, people, phone, fare, purebred, sex, worming, video, index_url, sep=' | ')

四:结果展示


http://www.niftyadmin.cn/n/4998517.html

相关文章

mysql:[Some non-transactional changed tables couldn‘t be rolled back]不支持事务

1. mysql创建表时默认引擎MyIsam,因此不支持事务的操作; 2. 修改mysql的默认引擎,可以使用show engine命令查看支持的引擎: 【my.conf详情说明】my.cnf配置文件注释详解_xiaolin01999的博客-CSDN博客 3. 原来使用MyIsam创建的表…

Spring-Kafka生产者源码分析

文章目录 概要初始化消息发送小结 概要 本文主要概括Spring Kafka生产者发送消息的主流程 代码准备&#xff1a; SpringBoot项目中maven填加以下依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent&…

redis核心数据结构

redis下载地址&#xff1a;Download | Redis linux进入redis目录首先使用make命令进行c的编译&#xff0c;修改redis.conf文件&#xff1a; daemonize yes #后台启动 protected-mode no #关闭保护模式&#xff0c;开启的 # 需要注释掉bind #bind 127.0.0.1&#xff08;bind…

Linux C语言 UDP协议实现的网络聊天室

需求分析 网络协议&#xff1a;UDP服务器需求&#xff1a; 需要一个存放用户数据的容器 因为是UDP协议&#xff0c;固采用链表的方式存储 服务器需要区分用户的操作类型&#xff08;如&#xff1a;上线&#xff0c;下线&#xff0c;发送消息&#xff09; 需要解析消息协议区分…

java基础知识-equals()方法和==区别

在Java中&#xff0c;equals()方法和操作符用于比较对象的相等性&#xff0c;但它们有着不同的行为和用途。 equals()方法&#xff1a; equals()方法是一个方法&#xff0c;定义在Object类中&#xff0c;可以被所有的Java对象调用。equals()方法默认实现是比较两个对象的引用是…

STM32WB55开发(1)----套件概述

STM32WB55开发----1.套件概述 所用器件视频教学样品申请优势支持协议系统控制和生态系统访问功能示意图系统框图跳线设置开发板原理图 所用器件 所使用的器件是我们自行设计的开发板&#xff0c;该开发板是基于 STM32WB55 系列微控制器所构建。STM32WBXX_VFQFPN68 不仅是一款评…

华为OD:IPv4地址转换成整数

题目描述&#xff1a; 存在一种虚拟IPv4地址&#xff0c;由4小节组成&#xff0c;每节的范围为0-255&#xff0c;以#号间隔&#xff0c;虚拟IPv4地址可以转换为一个32位的整数&#xff0c;例如&#xff1a; 128#0#255#255&#xff0c;转换为32位整数的结果为2147549183&#…

Java Web3J :使用web3j监听、查询、订阅智能合约的事件

前面有文章写如何使用Docker-compose方式部署blockscout浏览器+charts图表,区块链浏览器已经部署成功了,同时我们在链上增加了治理投票流程,如何实时的把治理事件快速同步到浏览器呢?这时就想到了Web3J来监听智能合约的事件,来达到同步事件的效果 目录 Web3J简介功能简介m…