怎么用Scrapy构建一个网络爬虫
这篇文章主要讲解了"怎么用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 |
修改"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 |
这里我们采用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 # 如果网络慢,可以适当加些延迟,单位是秒 |
$ scrapy crawl my_crawler
别忘了启动MongoDB并创建"bjhee"数据库哦。现在你可以在MongoDB里查询到记录了。
总结下,使用Scrapy来构建一个网络爬虫,你需要做的就是:厦门叉车租赁公司
"items.py"中定义爬取字段
在"spiders"目录下创建你的爬虫,编写解析函数和规则
"pipelines.py"中对爬取后的结果做处理
"settings.py"设置必要的参数
感谢各位的阅读,以上就是"怎么用Scrapy构建一个网络爬虫"的内容了,经过本文的学习后,相信大家对怎么用Scrapy构建一个网络爬虫这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
爬虫 网络 文章 文件 内容 地址 字段 就是 摘要 标题 环境 目录 学习 代码 命令 数据 数据库 结果 问题 来安 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 幻塔ios有哪些服务器 ipu对网络安全的要求 mfc 数据库odbc 保证sftp服务器安全性 云服务器如何使用安全 soc数据库 网络安全课件开发 方舟生存进化手游服务器骗子 前端后端数据库是怎么链接起来的 服务器8086端口怎么打开 银行网点 数据库 阳澄湖服务器离上海多远 魔兽哪个数据库有掉落概率 万科采购数据库 中关村软件开发工程师工资 工业平板用什么软件开发 小规模企业软件开发怎么交税 大专电脑软件开发 数据库名称35mydb是对的吗 红明星白日门服务器在哪里 服务器建造小游戏 网络技术岗位职责和任职要求 软件开发样板原型 amd电脑可以做软件开发吗 银联软件开发本科薪资 现在数据库技术存在什么问题 寻找软件开发人员论坛 哈尔滨建立数据库 数据库的最基础的对象是 澳大利亚社会科学数据库相关文章