Scrapy编写第一个爬虫
Scrapy编写第一个爬虫,Spider用于编写从单个网站(或者多个网站)爬取数据的类。其中包括了一个用于下载的初始URL,如何爬取网页中的其他链接以及如何分析网站页面的内容,封装到==item==容器中。
为了创建一个Spider,你必须继承scrapy.Spider类,且定义以下三个属性:
- name:用于区别Spider(爬虫),该名字必须是唯一的(不然会发生出乎意料之中的红色报错),你不可以为不同的Spider设定相同的名字。
- start_urls:包含了Spider在启动时进行爬取的URL列表。因此,第一个被获取到的页面就是其中之一,更多的URL则从初始的URL获取到的数据中提取。
- parse是spider的一个方法,被调用时,每个初始URL完成下载后生成的Response,对象将会作为唯一的参数传递给该函数,该方法负责解析返回的数据(response data),提取数据生成(item)以及生成需要进一步处理的URL的Request对象。
创建第一个爬虫
- win+R快捷键调出运行。
- 输入cmd回车车。
- 再输入scrapy startproject tutorial。
- 执行后出现。
You can start your first spider with:
cd tutorial
scrapy genspider example example.com
(说明你以及创建成功你的第一个爬虫了)
以下开始我们的第一个Spider代码,保存在tutorial / spiders目录下的dmoz_spider.py文件中。
class DmozSpider(scrapy.Spider):
name = "geekdocs"
allowed_domains = ["geek-docs.com"]
start_urls = ["https://geek-docs.com/vulkan/vulkan-tutorial/vulkan-understand-instance.html"]
def parse(self, response):
filename = response.url.split("/")[-2]
with open(filename, 'wb') as f:
f.write(response.body)
进入项目根目录,执行下列命令启动spider:
- win+R快捷键调出运行。
- 输入cmd回车车。
- 再输入scrapy crawl geekdocs=。
- scrapy crawl geekdocs启动用于爬取geek-docs.com的spider,你将得到类似如下的输出。
最后更有趣的事情发生了,就像我们parse方法指定的那样,在tutorial目录下,有一个包含URL所对应的内容文件被创建了:
第一次发文章,如内容有错误的地方请大佬们多多指教。以后还得跟大家多学习学习。