第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

python爬蟲,基于scrapy

標(biāo)簽:
Python

此次爬取的网站[下厨房]
图片描述
我想要的是,每道菜的菜名,配料,评分,厨师,以及它的连接,和厨师的连接信息。
图片描述
要想知道这些,必须知道网站一共多少种分类,这样才能准确找到每个分类下的所有菜品。
思路有了,就开始写代码。
Step1:

scrapy startproject xiachufang

图片描述
关于scrapy的安装,自行百度,有问题可以留言,
Step2: items.py

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class XiachufangItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name = scrapy.Field() # 菜名
    ingredients = scrapy.Field() # 配料
    score  =scrapy.Field()  # 评分
    url = scrapy.Field()  # 连接
    cook =scrapy.Field() # 厨师
    cook_url =scrapy.Field() # 厨师连接
    pass
class CategoryItem(scrapy.Item):
    c_id = scrapy.Field()  # 分类的ID
    c_name = scrapy.Field() # 分类的名字
    c_url = scrapy.Field() # 分类的连接

这个py文件定义了你需要的所有信息,前面讲了,我需要每道菜的菜名,配料,评分,厨师,以及它的连接,和厨师的连接信息。都这在里定义。由于我首先需要爬取它们网站一共多少种分类,所以这里我写两个爬虫文件。
Setp3: find_category.py

#! /usr/bin/env python 
# coding=utf-8
# author=ntwu

import scrapy
from xiachufang.items import CategoryItem
from scrapy.selector import Selector

class category_spider(scrapy.Spider):
    name = "find_id"
    start_urls = ["http://www.xiachufang.com/category/"]
    allowed_domains = ["http://www.xiachufang.com"]

    def parse(self,response):
        items =[]
        sel = Selector(response)
        has_bottom_border = sel.xpath('//ul[@class=" has-bottom-border"]/li')
        for index in range(0,len(has_bottom_border)):
            item = CategoryItem()
            c_id = "".join(has_bottom_border[index].xpath('.//a/@href').extract())
            c_name ="".join(has_bottom_border[index].xpath('.//a/text()').extract())
            c_url = c_id[10:-1]
            if c_id != []:
                item['c_id'] = c_id[10:-1]
                item['c_name'] =c_name
                item['c_url'] = "http://www.xiachufang.com/category/%s"%(str(c_url))
                yield item
            burp_sucees = open('cid.txt','a+')
            burp_sucees.write(c_url + "\n")
            burp_sucees.close()

这个py文件的意思就是,打开http://www.xiachufang.com/category/,找到所有的<ul>标签,这里需要注意的是我只要class=has-bottom-border的ul标签下<li>这样的标签很多,所以它找到的是一个list。
图片描述
遍历这个list,同时筛选。然后运行它。

scrapy crawl find_id

运行结果,一共找到了421种分类,随便打开一个分类。观察。
图片描述
图片描述
这里我要找的还是<li>标签
Setp4: 爬取菜品信息xiachufang_spider.py

#! /usr/bin/env python 
# coding=utf-8
# author=ntwu

import scrapy
from xiachufang.items import XiachufangItem
from scrapy.selector import Selector
from scrapy.http import Request

class spider(scrapy.Spider):
    name = "xiachufang"
    f_cid = open('./cid.txt', 'r')
    start_urls = []
    for id in f_cid.readlines():
            url = "http://www.xiachufang.com/category/%s/"%id[:-1]
            start_urls.append(url)
    allowed_domains = ["http://www.xiachufang.com"]
    def start_requests(self):
            for url in self.start_urls:
                yield Request(url=url, callback=self.parse)
    def parse(self, response):
        items = []
        sel = Selector(response)
        allitems = sel.xpath('//ul[@class="list"]/li')
        for index in range(0,len(allitems)):
            item = XiachufangItem()
            name = "".join(allitems[index].css('p.name').xpath('.//a/text()').extract())
            score ="".join(allitems[index].css('p.stats').xpath('.//span/text()').extract())
            url = "".join(allitems[index].css('p.name').xpath('.//a/@href').extract())
            cook ="".join(allitems[index].css('p.author').xpath('.//a/text()').extract())
            cook_url = "".join(allitems[index].css('p.author').xpath('.//a/@href').extract())
            item['name'] = name 
            item['score'] = score 
            item['url'] = "http://www.xiachufang.com%s"%url 
            item['cook'] = cook 
            item['cook_url'] = "http://www.xiachufang.com%s"%cook_url 

            yield item

运行结果。

scrapy crawl xiachufang -o items1.json -t json

图片描述

至此,爬虫结束。

點(diǎn)擊查看更多內(nèi)容
22人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消