scrapy 入门 学习笔记 二
蜘蛛抓回数据需要进行分析。首先要了解一下XPath。XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。XPath 是 W3C 标准,有空再学习吧。简单看一下html dom(Document Object Model)的文档对象模型.

首先用scrapy shell 进行交互式解析的实验使用命令如下:
# scrapy shell http://www.simonzhang.net/
获得数据并进入shell中
<......>DEBUG: Crawled (200) (referer: None)
[s] Available Scrapy objects:
[s] hxs
修改代码,来抓取头文件中的连接。代码如下:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
class DmozSpider (BaseSpider):
name = "simonzhang"
allowed_domains = ["simonzhang.net"]
start_urls = [
"http://www.simonzhang.net/"]
def parse (self,response):
hxs = HtmlXPathSelector(response)
site_code = hxs.select('//html/head')
for l in site_code:
_link = l.select('link/@href').extract()
print "================"
print _link
print "================"
运行蜘蛛,得到的抓取的结果。获得的结果需要保存,这时就用到item。item对象是python的字典,将字段和值进行关联。编辑spiders上层的items.py文件。
from scrapy.item import Item, Field
class ScrapytestItem(Item):
# define the fields for your item here like:
# name = Field()
title = Field()
head_link = Field()
head_meta = Field()
pass
然后需要修改蜘蛛文件,代码为:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from simonzhang.items import ScrapytestItem #ScrapytestItem引用上级目录里的类
class DmozSpider (BaseSpider):
name = "simonzhang"
allowed_domains = ["simonzhang.net"]
start_urls = [
"http://www.simonzhang.net/"]
def parse (self,response):
hxs = HtmlXPathSelector(response)
site_code = hxs.select('//html/head')
items = []
for l in site_code:
item = ScrapytestItem()
item['title'] = l.select('title/text()').extract()
item['head_link'] = l.select('link/@href').extract()
item['head_meta'] = l.select('meta').extract()
items.append(item)
return items
运行一下命令进行抓取,成功后就会在同级目录产生一个json的文件,里面保存的是抓取的内容。对于抓取小型的项目足够用了。
scrapy crawl simonzhang -o simonzhang.json -t json
上条命令里的“-o”为指定输出文件,“-t”为指定输出格式,更多的参数,可以使用“scrapy crawl –help”参考。
scrapy 入门 学习笔记 一
http://www.simonzhang.net/wp-admin/post.php?post=1108&action=edit