这篇文章主要讲解了“怎么用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 # 如果网络慢,可以适当加些延迟,单位是秒 |
<td class="crayon-code" ">
$ scrapy crawl my_crawler
别忘了启动MongoDB并创建”bjhee”数据库哦。现在你可以在MongoDB里查询到记录了。
总结下,使用Scrapy来构建一个网络爬虫,你需要做的就是:厦门叉车租赁公司
“items.py”中定义爬取字段
在”spiders”目录下创建你的爬虫,编写解析函数和规则
“pipelines.py”中对爬取后的结果做处理
“settings.py”设置必要的参数
感谢各位的阅读,以上就是“怎么用Scrapy构建一个网络爬虫”的内容了,经过本文的学习后,相信大家对怎么用Scrapy构建一个网络爬虫这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。