scrapy爬虫完整的代码实例[通俗易懂]

scrapy爬虫完整的代码实例[通俗易懂]新建工程scrapystartprojecttutorial进入tutorial目录,在spider下面新建quotes_spider.pyimportscrapyfrom..itemsimportQuotesItem#coding:utf-8classQuotesSpider(scrapy.Spider):name=”quot…

大家好,又见面了,我是你们的朋友全栈君。

    新建工程

scrapy startproject tutorial

    进入tutorial目录,在spider下面新建quotes_spider.py

import scrapy
from ..items import QuotesItem

#coding:utf-8

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    allowed_domain = "toscrape.com"

    def start_requests(self):
        for i in range(1,2):
            url = "http://quotes.toscrape.com/page/" + str(i) + "/"
            yield scrapy.Request(url=url,callback=self.parse)


    def parse(self, response):
        item = QuotesItem()
        for quote in response.css('div.quote'):
            item['text'] = quote.css('span.text::text').get(),
            item['author'] = quote.css('small.author::text').get(),
            item['tags'] = quote.css('div.tags a.tag::text').getall()
            yield item

  进入items.py,代码如下:

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

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

import scrapy


class TutorialItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    pass

class QuotesItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    text = scrapy.Field()
    author = scrapy.Field()
    tags = scrapy.Field()
    pass

    进入pipelines.py进行设置,对数据进行清洗

# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html


class TutorialPipeline(object):
    def process_item(self, item, spider):
        return item

class QuotesPipeline(object):
    def process_item(self,item, spider):
        if item['text']:
            item['text'] = item['text'][0][1:-1]
        if item['author']:
            item['author'] = item['author'][0][1:-1]
        return item

    进入setting.py,修改相关配置

ITEM_PIPELINES = {
   'tutorial.pipelines.TutorialPipeline': 300,
   'tutorial.pipelines.QuotesPipeline': 500,
}
FEED_EXPORT_ENCODING = 'utf-8'

    进行命令行,执行爬虫

scrapy crawl quotes -o quotes.jl
import json
import codecs

class JsonPipeline(object):
    def __init__(self):
        self.file = codecs.open('logs.json', 'w', encoding='utf-8')
    def process_item(self, item, spider):
        line = json.dumps(dict(item), ensure_ascii=False) + "\n"
        self.file.write(line)
        return item
    def spider_closed(self, spider):
        self.file.close()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153159.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于Windows的安全帽识别算法「建议收藏」

    基于Windows的安全帽识别算法「建议收藏」现如今越来越重视安全生产,各个企业也都采取各种措施保障员工的安全生产从而保障了企业的利益。但是依然存在着在岗工人不佩戴安全帽从事危险作业,未佩戴安全帽作业而造成的伤亡时有发生。安全帽佩戴管理成为一大难点,为降低管理难度提高在岗人员安全意识,可在各种生产现场部署安全帽识别仪实时视频检测预警在岗工人是否按照要求做好安全防范措施作业。真正做到安全生产信息化管理,做到事前预防事中常态监测,事后规范管理。…

    2022年5月19日
    41
  • npoi css,NPOI颜色对照表

    npoi css,NPOI颜色对照表颜色对照表:颜色测试Class名称shortTest颜色Black8Test颜色Brown60Test颜色Olive_Green59Test颜色Dark_Green58Test颜色Dark_Teal56Test颜色Dark_Blue18Test颜色Indigo62Test颜色Grey_80_PERCENT63Test颜色Dark_Red16Test颜色O…

    2022年5月13日
    67
  • 七、分发脚本xsync报错

    七、分发脚本xsync报错一、报错问题Badownerorpermissionson/home/pcz/.ssh/configBadownerorpermissionson/home/pcz/.ssh/configrsync:connectionunexpectedlyclosed(0bytesreceivedsofar)[sender]rsyncerror:unexplainederror(code255)atio.c(226)[sender=3.1.2]Badow

    2022年5月5日
    48
  • select2 api参数的文档

    select2 api参数的文档

    2021年11月9日
    32
  • matlab如何使用循环语句_matlab中循环语句怎么写

    matlab如何使用循环语句_matlab中循环语句怎么写对于fo循环和while循环均适用:1)for语句中赋值问题%理解for循环clccleara=1;m=3;fori=1:m%理解此处的m不是向量,是循环时的某一个固定值b(i)=a*i%得到的b值保留前一个循环中计算的值。是一个随着i变化的向量,loop1时向量中有1个元素;loop2时有2个元素,分别是loop1中值和loop2中

    2022年9月1日
    10
  • 云计算的设计模式(三)——补偿交易模式

    云计算的设计模式(三)——补偿交易模式

    2022年1月12日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号