资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python爬虫框架scrap的使用方法

小编给大家分享一下python爬虫框架scrap的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

成都创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为西盟企业提供专业的网站建设、成都做网站西盟网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

关于Scrapy 简介

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

安装

在linux 和 Mac 系统下,可使用 pip安装。

pip install scrapy

Windows上的安装方式

conda install -c conda-forge scrapy

Scrapy 基本使用

第一步,创建项目

scrapy 提供了一些命令行工具,可直接生成项目代码。我们可直接使用如下命令来生成项目代码

scrapy startproject v6_scrapy

第二步,编写Spider

在sipders目录中,添加我们的爬虫文件toutiao_spider.py,内容如下:

# -*- coding:utf-8 -*-
import scrapy
 
 
class ToutiaoSpider(scrapy.Spider):
    name = 'toutiao'
    start_urls = [
        'https://toutiao.io/c/ai?page=1',
    ]
 
    def parse(self, response):
        """
        实现html解析
        :param response:
        :return:
        """
        papers = response.xpath('//a[@rel="external"]')
        for paper in papers:
            title = paper.xpath('./@title').extract()[0]
            href = 'https://toutiao.io%s' % paper.xpath('./@href').extract()[0]
        
        print(title, href)

在完成之后,执行如下代码启动爬虫:

scrapy crawl toutiao

第三步,定义item

scrapy 使用Item类来结构化数据,以方便对数据的操作。

class ToutiaoItem(scrapy.Item):
    title = scrapy.Field()
href = scrapy.Field()

第四步,构建 Item pipeline 持久化到文件

我们看下如何将爬取到的数据保存到文件,代码如下:

class V6ScrapyFilePipeline(object):
 
    def __init__(self):
        self.file = open('toutiao.json', 'wb')
 
    def process_item(self, item, spider):
        if item['title']:
            line = json.dumps(dict(item))+"\n"
            self.file.write(line.encode())
            return item
        else:
            raise DropItem('在[%s]item中,没有title关键字'%item)

以上是python爬虫框架scrap的使用方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站名称:python爬虫框架scrap的使用方法
分享地址:http://cdkjz.cn/article/iiechi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220