Scrapy1.7入门中文教程(一)

Scrapy1.7入门中文教程(一)

Scrapy是一个能被用来爬网站、截取数据的应用框架,在数据挖掘、信息处理等方面有着很广泛的应用。

创建工程

切换至合适的目录后,在终端输入,scrapy会帮你创建一个名叫tutorial的工程

$ scrapy startproject tutorial

各级文件及其作用如下
Scrapy1.7入门中文教程(一)_第1张图片

创建你的第一个爬虫

在tutorial/spiders目录下创建一个名叫quotes_spider.py的文件,里面写上这样的代码。

```python
import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

如你所见,我们的Spider子类scrapy.Spider并定义了一些属性和方法:

name:标识Spider。它在项目中必须是唯一的,也就是说,你不能为不同的Spiders设置相同的名称。
start_requests():必须返回一个可迭代的请求(你可以返回一个请求列表或编写一个生成器函数),Spider将开始从中爬行。后续请求将从这些初始请求中连续生成。
parse():将调用一个方法来处理为每个请求下载的响应。 response参数是TextResponse的一个实例,它保存页面内容并具有处理它的其他有用方法。
parse()方法通常会解析响应,提取已删除的数据作为dicts,并查找要遵循的新URL以及从中创建新请求(Request)。

运行爬虫

回到工程的最顶层目录,运行:

$scrapy crawl quotes

⚠️注意,这里的quotes上我们刚才命名的名字。
然后爬虫会向网站发送请求,出现类似这样的东西
Scrapy1.7入门中文教程(一)_第2张图片

查看结果

可以看到,tutorial目录下出现了两个json文件,里面就是我们爬下来的内容。由于parse()内没有对response做任何处理,所以这里爬下来的就是网页源码。

你可能感兴趣的:(python,scrapy)