用 Scrapy 做爬虫分为四步
上一章节做了创建项目,接着用上一次创建的项目来爬取网页
网上很多教程都是用的 dmoz.org 这个网站来做实验,所以我也用这个来做了实验
在 Scrapy 中,items 是用来加载抓取内容的容器
我们想要的内容是
在 tutorial 目录下会有 items.py 文件,在默认的代码后面添加上我们的代码
- # -*- coding: utf-8 -*-
- # Define here the models for your scraped items
- #
- # See documentation in:
- # http://doc.scrapy.org/en/latest/topics/items.html
- from scrapy.item import Item, Field
- import scrapy
- class TutorialItem(scrapy.Item):
- # define the fields for your item here like:
- # name = scrapy.Field()
- #下面是我自己加的
- class DmozItem(Item):
- title = Field()
- link = Field()
- desc = Field()
爬虫还是老规矩,先爬再取。也就是说先获取整个网页的内容,然后取出你需要的部分
在 tutorial\spiders 目录下建立 python 文件,命名为 dmoz_spider.py
目前的代码如下
- from scrapy.spiders import Spider
- class DmozSpider(Spider):
- name = "dmoz"
- allowed_domains = ["dmoz.org"]
- start_urls= [
- "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
- "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
- ]
- def parse(self,response):
- filename=response.url.split("/")[-2]
- open(filename,'wb').write(response.body)
name 是爬虫的名字,必须唯一
allowed_domains 是爬取的限制范围,意思只爬取该域名下的内容
start_urls 是爬取的 url 列表,子 URLl 将会从这些起始 URL 中继承性生成
parse 大概可以理解为对 response 的预处理
好啦,爬虫写好了,然后运行,在 tutorial 目录下打开 cmd 窗口
输入
- scrapy crawl dmoz
哦豁,报错了
娘度了下,是因为没有 win32api 这个模块
我用的是 python2.7 32 位,所以下载 pywin32-219.win32-py2.7.exe 这个文件
记得不要下错了,分 32 位和 64 位的,下载成 64 位的话会继续报
dll load failed: 1% 不是有效的 win32 的
错误
配置好环境后,重新运行
成功
tutorial 目录下多了 book 和 Resources 两个文件,这就是爬取下来的文件
来源: http://www.bubuko.com/infodetail-1972696.html