Scrapy的使用

时间:2022-09-22 13:40:29

建立好项目以后,在项目文件内scrapy会搭好框架,我们只需要按照框架设置.

先定义Item    它是保存爬取到的数据的容器,其使用方法和python的字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误.

然后编写爬虫类spider,  spider是用户编写用于从网站上爬取数据的类.其包含了一个用于下载的初始URL,然后是如何跟进网页中的链接以及如何分析页面中的内容,还有提起生产ltem的方法.

Selector是一个选择器,它有四个基本的方法:

xpath():传入xpath表达式,返回该表达式所对应的所有节点的selector list列表,xpath是一门在网页中查找特定信息的语言,所有用XPath来筛选数据,比正则要容易些

css() 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表

extract() 序列化该节点为unicode字符串并返回list

re() 根据传入的正则表达式对数据进项提取,返回unicode字符串list列表

import scrapy

from douban.items import DmozItem

class DmozSpider(scrapy.Spider):
name='dmoz' #爬虫的名字
allowed_domains=['dmoztoos.net'] #爬取的范围
start_urls=[
'http://www.dmoztools.net/Reference/Archives/Arts/Film/'
]

def parse(self,response):
#filename=response.url.split('/')[-2]
#with open(filename,'wb') as f:
#f.write(response.body)
sel=scrapy.selector.Selector(response)
sites=sel.xpath('//section/div/div/div/div[@class="title-and-desc"]')
items=[]
for site in sites:
item=DmozItem()
item['title']=site.xpath('a/div/text()').extract()
item['link']=site.xpath('a/@href').extract()
item['desc']=site.xpath('div[@class="site-descr "]/text()').extract()
items.append(item)

return items

scrapy crawl dmoz -o items.json -t json 此命令是爬虫最后导出json文件的命令