怎么用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安全错误 数据库的锁怎样保障安全 东营有软件开发公司吗 韶关软件开发价格 幼儿园网络安全诈骗PPT 山东互联网软件开发正规平台 软件开发工程师笔试 cistrome数据库创始人 平安科技 会互联网金融 淘宝收货服务器异常请稍后重试 qq哪里有腾讯服务器里的记录 ecmall数据库操作 静安区智能软件开发怎么样 我的世界国际服私人服务器纯生存 怎么连接反向代理服务器 网络安全力 软件开发很辛苦吗 网络安全讲师必备技能 锦州银行app服务器错误 乙级软件开发公司 微信小程序 数据库大小 计算机三级网络技术过考指南 人工智能系统和网络技术的区别 网络安全产业数据 软件开发怎么收费的 中天科技工业互联网平台 乡镇网络安全应急预防措施 汉口卓尔软件开发 发送内容到服务器失败 调研国家网络安全周 石油大亨连接不到服务器 网络安全青年相关文章