美文网首页
Scrapy初识

Scrapy初识

作者: 敢梦敢当 | 来源:发表于2017-06-04 11:37 被阅读0次

<h2>创建Scrapy项目<h2>

首先打开命令行,进入你想存放scrapy项目的目录下,输入以下命令

scrapy startproject firstscrapy 

将会创建firstscrapy文件夹,其目录结构如下:

firstscrapy/  
    scrapy.cfg            # 部署配置文件  
  
    coolscrapy/           # Python模块,你所有的代码都放这里面  
        __init__.py  
  
        items.py          # Item定义文件  
  
        pipelines.py      # pipelines定义文件  
  
        settings.py       # 配置文件  
  
        spiders/          # 所有爬虫spider都放这个文件夹下面  
            __init__.py  
            ...  

<h2>Item讲解与创建<h2>
Item含义:我们爬取网页后得到的数据需要保存,而Item对象是一种简单的容器,可以保存我们爬取得到的数据,让我们可以以字典格式将数据进行保存

<h3>Item实例<h3>
我们通过创建一个scrapy.Item类,并定义它的类型为scrapy.Field的属性,我们准备将虎嗅网新闻列表的名称、链接地址和摘要爬取下来。

import scrapy  
  
class HuxiuItem(scrapy.Item):  
    title = scrapy.Field()    # 标题  
    link = scrapy.Field()     # 链接  
    desc = scrapy.Field()     # 简述  
    posttime = scrapy.Field() # 发布时间

<h2>第一个Spider<h2>

在这个类中我们定义了一个初始化的url下载列表,以及怎样跟踪链接,如何解析页面内容来提取Item。

  • name: Spider名称,必须是唯一的
  • start_urls: 初始化下载链接URL
  • parse(): 用来解析下载后的Response对象,该对象也是这个方法的唯一参数。它负责解析返回页面数据并提取出相应的Item(返回Item对象),还有其他合法的链接URL(返回Request对象)。

我们在firstscrapy/spiders文件夹下面新建huxiu_spider.py,内容如下:

#!/usr/bin/env python  
# -*- encoding: utf-8 -*-  
""" 
Topic: sample 
Desc : 
"""  
from firstscrapy.items import HuxiuItem  
import scrapy  
  
class HuxiuSpider(scrapy.Spider):  
    name = "huxiu"  
    allowed_domains = ["huxiu.com"]  
    start_urls = [  
        "http://www.huxiu.com/index.php"  
    ]  
  
    def parse(self, response):  
        for sel in response.xpath('//div[@class="mod-info-flow"]/div/div[@class="mob-ctt"]'):  
            item = HuxiuItem()  
            item['title'] = sel.xpath('h3/a/text()')[0].extract()  
            item['link'] = sel.xpath('h3/a/@href')[0].extract()  
            url = response.urljoin(item['link'])  
            item['desc'] = sel.xpath('div[@class="mob-sub"]/text()')[0].extract()  
            print(item['title'],item['link'],item['desc'])  

<h2>运行爬虫<h2>
在根目录执行下面的命令,其中huxiu是你定义的spider名字:


scrapy crawl huxiu 

<h2>处理链接<h2>
如果想继续跟踪每个新闻链接进去,看看它的详细内容的话,那么可以在parse()方法中返回一个Request对象,然后注册一个回调函数来解析新闻详情。

from firstscrapy.items import HuxiuItem  
import scrapy  
  
class HuxiuSpider(scrapy.Spider):  
    name = "huxiu"  
    allowed_domains = ["huxiu.com"]  
    start_urls = [  
        "http://www.huxiu.com/index.php"  
    ]  
  
    def parse(self, response):  
        for sel in response.xpath('//div[@class="mod-info-flow"]/div/div[@class="mob-ctt"]'):  
            item = HuxiuItem()  
            item['title'] = sel.xpath('h3/a/text()')[0].extract()  
            item['link'] = sel.xpath('h3/a/@href')[0].extract()  
            url = response.urljoin(item['link'])  
            item['desc'] = sel.xpath('div[@class="mob-sub"]/text()')[0].extract()  
            # print(item['title'],item['link'],item['desc'])  
            yield scrapy.Request(url, callback=self.parse_article)  
  
    def parse_article(self, response):  
        detail = response.xpath('//div[@class="article-wrap"]')  
        item = HuxiuItem()  
        item['title'] = detail.xpath('h1/text()')[0].extract()  
        item['link'] = response.url  
        item['posttime'] = detail.xpath(  
            'div[@class="article-author"]/span[@class="article-time"]/text()')[0].extract()  
        print(item['title'],item['link'],item['posttime'])  
        yield item  

最后我们可以再次运行爬虫

相关文章

  • Scrapy初识

    创建Scrapy项目 首先打开命令行,进入你想存放scrapy项目的目录下,输入以下命令 将会创建firstscr...

  • 初识Scrapy

    为什么使用Scrapy? 我们可以用requests和beautifulsoup完成一个实用的爬虫,但如果想大规模...

  • 初识Scrapy

    一.基本命令 创建项目 scrapy startproject 项目名字创建爬虫文件 scrapy genspi...

  • 初识scrapy

    学习scrapy笔记链接:https://pan.baidu.com/s/1NLpLEk2cv8QbssFV-Pz...

  • Scrapy爬取数据初识

    Scrapy爬取数据初识 初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 ...

  • 初识Scrapy框架

    Scrapy是一个流行的网络爬虫框架。 Ubuntu下安装 sudo apt-get install python...

  • 1、初识scrapy

    Scrapy是一个从网上爬取数据的开源的、友好的框架。 An open source and collaborat...

  • Scrapy定时爬虫总结&Docker/K8s部署

    初识Scrapy Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并...

  • Scrapy 入门学习 1 & 初识Scrapy

    引子 最近工作上需要对Scrapy进行二次开发,为此我又好好的复习了一下Scrapy相关的知识,并整理了如下内容 ...

  • scrapy框架是真爱

    初识scrapy框架 首先我认为scrapy框架和编写的普通爬虫文件没有什么区别 唯一不同的是它可以把你得各种爬虫...

网友评论

      本文标题:Scrapy初识

      本文链接:https://www.haomeiwen.com/subject/zrevfxtx.html