Scrapy 学习笔记「一」

#Web #Python

jpg

安装 Scrapy 的过程在此不提,有需要的同学直接看官方文档的安装部分即可。

###1. 创建项目

在终端下执行 scrapy startproject tutorial,就会生成一个 tutorial 文件夹。文件夹的内容如下:

tutorial/
	scrapy.cfg
	tutorial/
		__init__.py
		items.py
		pipeilines.py
		settings.py
		spiders/
			__init__.py

具体文件的意义为:

  • scrapy.cfg : 项目配置文件
  • tutorial/ : 项目下的 Python 模块,我们会在这里面添加代码
  • tutorial/items.py: 项目的 items 文件
  • tutorial/pipeilines.py:项目的 pipeilines 文件
  • tutorial/settings.py:项目的设置文件
  • tutorial/spiders/:放置爬虫文件的文件夹

###2. 定义 item

修改 tutorial/items.py 文件如下:

from scrapy.item import Item, Field

class DmozItem(Item):
	title = Field()
	link = Field()

###3. 使用 XPath 来获得信息

几个 XPath 的例子:

  • /html/head/title:在 html 文件中的 <head> 部分选择 <title> 元素
  • /html/head/title/text():选择 <title> 元素中的文本信息

Scrapy 中的 Selector 类的基本方法:

  • extract():返回被选中数据的 unicode 字符串

###4. 使用 item

item 对象就类似于 Python 中的字典。

item = DmozItem()
item ['title'] = 'Example title'

###5. 构建爬虫

tutorial/spiders 中新建 dmoz_spider.py 文件如下:

from scrapy.spider import Spider
from scrapy.selector import Selector

from tutorial.items import DmozItem

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/Resource"
		]

	def parse(self, response):
		sel = Selecor(response)
		sites = sel.xpath('//ul/li')
		items = []
		for site in sites:
			item = DmozItem()
			item['title'] = site.xpath('a/text()').extract()
			item['link'] = site.xpath('a/@href').extract()
			items.append(item)
		return items

要执行爬虫,只需返回tutorial/根目录,执行命令如下:

scrapy crawl dmoz

###6. 存储数据

最简单的方法是使用内置方法将数据存储为 json 格式文件,执行命令如下:

scrapy crawl dmoz -o items.json -t json


END