怎么用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安全错误 数据库的锁怎样保障安全 互联网科技垄断 互联网科技公司发展 广州宏创互联网科技 广州互联网络科技有限公司 深圳期待互联网科技 金融科技和互联网金融 博兴的互联网电子科技公司 央行互联网金融科技公司 互联网大会黑科技排名 赶超互联网科技 微信多开 米聚互联网科技南京有限公司排面 天津腾达互联网科技有限公司 东莞新华互联网科技学校 阿里互联网科技企业 世界互联网领先科技成果获奖 互联网科技圈年度人物 工业互联网科技创业 科技互联网行业投资研究 广州智享互联网科技 数字互联网科技有限公司 河南真二互联网科技有限公司 腾讯阿里互联网科技 互联网络科技有限公司 互联网 的科技创新 广州宏创互联网科技 壕鑫互联网络科技 银川新华互联网科技学校联系电话 互联网保险科技创业 恒生科技指数 中概互联网 10位科技互联网大佬相关文章