文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用Scrapy构建一个网络爬虫

2023-06-03 01:58

关注

这篇文章主要讲解了“怎么用Scrapy构建一个网络爬虫”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Scrapy构建一个网络爬虫”吧!

我们来看下Scrapy怎么做到这些功能的。首先准备Scrapy环境,你需要安装Python(本文使用v2.7)和pip,然后用pip来安装lxml和scrapy。个人强烈建议使用virtualenv来安装环境,这样不同的项目之间不会冲突。详细步骤这里就不赘述了。对于Mac用户要注意,当使用pip安装lxml时,会出现类似于的下面错误:

Error: #include “xml/xmlversion.h” not found

解决这个问题,你需要先安装Xcode的command line tools,具体的方法是在命令行执行下面的命令即可。

$ xcode-select --install

环境安装好之后,我们来用Scrapy实现一个简单的爬虫,抓取本博客网站的文章,地址和摘要。

    1

    1

    2

    3

    4

    5

    6

    7

    8

    1. 设置待抓取内容的字段,本例中就是文章的,地址和摘要

修改”items.py”文件,在”MyCrawlerItem”类中加上如下代码:

Python

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

import scrapy

class MyCrawlerItem(scrapy.Item):

    title = scrapy.Field()    # 文章

    url = scrapy.Field()      # 文章地址

    summary = scrapy.Field()  # 文章摘要

    pass



对于XPath不熟悉的朋友,可以通过Chrome的debug工具获取元素的XPath。

    1

    1. 将结果保存到数据库

这里我们采用MongoDB,你需要先安装Python的MongoDB库”pymongo”。编辑”my_crawler”目录下的”pipelines.py”文件,在”MyCrawlerPipeline”类中加上如下代码:

Python

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

import pymongo

from scrapy.conf import settings

from scrapy.exceptions import DropItem

class MyCrawlerPipeline(object):

    def __init__(self):

        # 设置MongoDB连接

        connection = pymongo.Connection(

            settings['MONGO_SERVER'],

            settings['MONGO_PORT']

        )

        db = connection[settings['MONGO_DB']]

        self.collection = db[settings['MONGO_COLLECTION']]

    # 处理每个被抓取的MyCrawlerItem项

    def process_item(self, item, spider):

        valid = True

        for data in item:

            if not data:  # 过滤掉存在空字段的项

                valid = False

                raise DropItem("Missing {0}!".format(data))

        if valid:

            # 也可以用self.collection.insert(dict(item)),使用upsert可以防止重复项

            self.collection.update({'url': item['url']}, dict(item), upsert=True)

        return item

再打开”my_crawler”目录下的”settings.py”文件,在文件末尾加上pipeline的设置:

Python

ITEM_PIPELINES = {

    'my_crawler.pipelines.MyCrawlerPipeline': 300,    # 设置Pipeline,可以多个,值为执行优先级

}

# MongoDB连接信息

MONGO_SERVER = 'localhost'

MONGO_PORT = 27017

MONGO_DB = 'bjhee'

MONGO_COLLECTION = 'articles'

DOWNLOAD_DELAY=2    # 如果网络慢,可以适当加些延迟,单位是秒

  1. <td class="crayon-code" ">

  2. $ scrapy crawl my_crawler

    别忘了启动MongoDB并创建”bjhee”数据库哦。现在你可以在MongoDB里查询到记录了。

    总结下,使用Scrapy来构建一个网络爬虫,你需要做的就是:厦门叉车租赁公司

    • “items.py”中定义爬取字段

    • 在”spiders”目录下创建你的爬虫,编写解析函数和规则

    • “pipelines.py”中对爬取后的结果做处理

    • “settings.py”设置必要的参数

感谢各位的阅读,以上就是“怎么用Scrapy构建一个网络爬虫”的内容了,经过本文的学习后,相信大家对怎么用Scrapy构建一个网络爬虫这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯