当一个scrapy项目被成功创建时,会自动生成一些文件。例如:
其中spiders文件夹用于存放自己编写的爬虫代码,而其他文件都是系统生成。
Items.py文件存放的是Item,而Item也就是提取到的数据的容器。
<span style="font-size:14px;">import scrapy
class FirstspiderItem(scrapy.Item):
name = scrapy.Field()</span>
Item中的内容是通过对解析的网站分析得到的,例如本例中只需要取得名称,那么就只定义一个name即可,如果还需要url,只要在加上一句url=scrapy.Field()即可。
在firstSpider/spiders目录下用于存放自己编写的爬虫,本例的example.py文件内容如下:
class ExampleSpider(scrapy.Spider):
name = "example"
allowed_domains = ["zhihu.com"]
start_urls = (
'http://www.zhihu.com/question/31810474#answer-16771792',
)
def parse(self, response):
filename = response.url.split("/")[-2]
print filename
with open(filename,"wb") as f:
f.write(response.body)
首先创建一个名字类似于xxxSpider()的类,并继承scrapy.Spider类,并自定义name、start_urls和parse()。
name是爬虫的名字,必须是唯一的。
start_urls是Spider在启动时进行爬取的url列表,所以起始url可以是多个。
parse()传入一个response参数,这个方法解析response数据,生成Item,以及需要进一步处理的URL的Request对象。
本例中filename实际上就是start_urls中的question单词。将读取到的页面内容保存到『question』文件中。
完成以上步骤,第一个页面就已经被爬下来了。
下一课学习页面解析。