scrapy - 美团民宿 实战练习

2022年1月5日爬虫小练习

目录结构

items.py

import scrapy

# 民俗名称,地区,价格,房间类型及数量,床的数量,可住几人
class MeituanItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    place = scrapy.Field()
    price = scrapy.Field()

    room = scrapy.Field()
    bed_num = scrapy.Field()
    num = scrapy.Field()

 spiders

import scrapy
from ..items import MeituanItem

class MtSpiderSpider(scrapy.Spider):
    name = 'mt_spider'
    allowed_domains = ['minsu.dianping.com']
    max_page = 17
    city = input("请输入您要入住的酒店城市:")
    # start_urls = [f'https://minsu.dianping.com/zhenjiang/pn{page}/'for page in range(1, max_page+1)]
    start_urls = [f'https://minsu.dianping.com/{city}']
    cookie = {
        'uuid': 'DEDA9E3B9445E0456AC4E184611C03856CD06D8EB119B96FB4E5C7E9A10C0894',
        'iuuid': 'DEDA9E3B9445E0456AC4E184611C03856CD06D8EB119B96FB4E5C7E9A10C0894',
        'zgwww': 'd8c66050-6df4-11ec-b97e-5b303ab7854f',
        'phx_wake_up_type': 'mtpc_category',
        'phx_wake_up_source': 'nav',
        '_lxsdk_cuid': '17e2907f435c8-0d137c1f0260d8-57b1a33-1fa400-17e2907f436c8',
        '_lxsdk': 'DEDA9E3B9445E0456AC4E184611C03856CD06D8EB119B96FB4E5C7E9A10C0894',
        '_hc.v': '8048cc0f-4a2b-74fa-a6e5-8e66be935872.1641365894',
        '_ga': 'GA1.2.1807144298.1641365895',
        '_gid': 'GA1.2.353209009.1641365895',
        'XSRF-TOKEN': 'RHjkGP8U-WxvBm7zU25nkqltB-5gPhVflhcs,',
        '_lxsdk_s': '17e2907f436-872-2d7-13c%7C%7C630',
    }

    def start_requests(self):
        for page in range(1, self.max_page+1):
            base_url = 'https://minsu.dianping.com/{}/pn{}'.format(self.city, page)
            yield scrapy.Request(base_url, callback=self.parse)

    def parse(self, response):
        all = response.xpath('.//div[@class="r-card-list v-stretch h-stretch"]').xpath('.//div[@class="r-card-list__item shrink-in-sm"]')
        for i in all:
            hrefs = i.xpath('.//a[@class="product-card-container"]/@href').extract_first()
            item = MeituanItem()
            item['title'] = i.xpath('./div/a/figure/figcaption/div/text()').extract_first('')
            item['place'] = i.xpath('./div/a/figure/figcaption/div/div[@class="mt-2"]/text()').extract_first('')
            item['price'] = i.xpath('.//span[@class="product-card__price__latest"]/text()').extract_first('')
            item['room'] = i.xpath('./div/a/figure/figcaption/div/div[1]/text()').extract_first('').split(' · ')[0]
            item['bed_num'] = i.xpath('./div/a/figure/figcaption/div/div[1]/text()').extract_first('').split(' · ')[1]
            item['num'] = i.xpath('./div/a/figure/figcaption/div/div[1]/text()').extract_first('').split(' · ')[2]
            href = response.urljoin(hrefs)
            yield scrapy.Request(url=href, callback=self.new_parse, meta={'item': item})

        # # 翻页操作
        # next_page = response.xpath('.//ul[@class="phx-paginator-wrapper"]/li[10]/a/@href').extract_first()
        # print(response.urljoin(next_page))
        # yield scrapy.Request(response.urljoin(next_page), callback=self.parse)

    def new_parse(self, response):
        item = response.meta['item']
        ul = response.xpath('.//div').extract_first()
        # print(ul)
        yield item

运行结果

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug智造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值