当前位置:   article > 正文

scrapy框架菜鸟学习记录

scrapy框架菜鸟学习记录

scrapy框架菜鸟学习记录

scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。其可以应用在数据挖掘,信息处理或储存历史数据等一系列的程序中。其最初是为了页面抓取(更确切的说,网络抓去而设计的,也可以应用在获取api所返回的数据或者通用的网络爬虫。scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

1.下载安装

我使用的是pycharm,相应的我用的python版本是3.5。

2.案例

抓取湖北电台的所有新闻的题目和简介:
在这里插入图片描述
步骤:
(1)进入pycharm的终端输scrapy startproject myfirst 创建我的第一个项目
在这里插入图片描述
文件说明:

scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py 设置数据存储模板,用于结构化数据,如:Django的Model
pipelines 数据处理行为,如:一般结构化的数据持久化
settings.py 配置文件,如:递归的层数、并发数,延迟下载等
spiders 爬虫目录,如:创建文件,编写爬虫规则

(2)创建爬虫程序
在这里插入图片描述
在终端中输入以上代码来创建名为hbdt的爬虫文件
(3)设置好爬虫主类里的起始网页,和提取规则。(其中rules的作用是爬完本页后进入下一页继续爬取)

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class HbdtSpider(CrawlSpider):
    name = 'hbdt'
    allowed_domains = ['news.hbtv.com.cn']
    start_urls = ['http://news.hbtv.com.cn/hbxw1072?page=1']

    rules = (
        Rule(LinkExtractor(restrict_xpaths=r"//div[@class ='page ov']/a[9]"), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        titles = response.xpath('//h3/a/text()').extract()
        contents = response.xpath("//div[@class='left-cont']//li//p/text()").extract()
        for title, content in zip(titles, contents):
            yield {
                "title": title,
                "content": content
            }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

(4)设置好数据处理程序
把爬取的内容保存在txt文件中。

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

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


class MyfirstPipeline(object):
    def open_spider(self, spider):
        self.file = open('hbdt.txt', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        title = item['title']
        content = item['content']
        info = title + '\n' + content + '\n'
        self.file.write(info)
        self.file.flush()
        return item

    def close_spider(self, soider):
        self.file.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(5)创建执行程序

from scrapy.cmdline import execute
execute(['scrapy','crawl','hbdt'])
  • 1
  • 2

(6)运行得到结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/764200
推荐阅读
  

闽ICP备14008679号