scrapy是一款强大的python爬虫框架,可以帮助我们快速、灵活地获取互联网上的数据。在实际爬取过程中,我们会经常遇到html、xml、json等各种数据格式。在这篇文章中,我们将介绍如何使用scrapy分别爬取这三种数据格式的方法。
一、爬取html数据
创建scrapy项目首先,我们需要创建一个scrapy项目。打开命令行,输入以下命令:
scrapy startproject myproject
这个命令将会在当前文件夹下创建一个叫做myproject的scrapy项目。
设置起始url接下来,我们需要设置起始的url。在myproject/spiders目录下,创建一个名为spider.py的文件,编辑文件,输入以下代码:
import scrapyclass myspider(scrapy.spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): pass
代码首先导入了scrapy库,然后定义了一个爬虫类myspider,设置了一个名为myspider的spider名称,并设置了一个起始url为http://example.com。最后定义了一个parse方法。parse方法默认会被scrapy调用,用来处理响应数据。
解析响应数据接下来,我们需要解析响应数据。继续编辑myproject/spiders/spider.py文件,加入以下代码:
import scrapyclass myspider(scrapy.spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): title = response.xpath('//title/text()').get() yield {'title': title}
代码中,我们使用response.xpath()方法来获取html页面中的标题。使用yield来返回字典类型数据,包含了我们获取到的标题。
运行爬虫最后,我们需要运行scrapy爬虫。在命令行中输入以下命令:
scrapy crawl myspider -o output.json
这个命令会将数据输出到output.json文件中。
二、爬取xml数据
创建scrapy项目同样地,我们首先需要创建一个scrapy项目。打开命令行,输入以下命令:
scrapy startproject myproject
这个命令将会在当前文件夹下创建一个叫做myproject的scrapy项目。
设置起始url在myproject/spiders目录下,创建一个名为spider.py的文件,编辑文件,输入以下代码:
import scrapyclass myspider(scrapy.spider): name = 'myspider' start_urls = ['http://example.com/xml'] def parse(self, response): pass
代码中,我们设置了一个名为myspider的spider名称,并设置了一个起始url为http://example.com/xml。
解析响应数据继续编辑myproject/spiders/spider.py文件,加入以下代码:
import scrapyclass myspider(scrapy.spider): name = 'myspider' start_urls = ['http://example.com/xml'] def parse(self, response): for item in response.xpath('//item'): yield { 'title': item.xpath('title/text()').get(), 'link': item.xpath('link/text()').get(), 'desc': item.xpath('desc/text()').get(), }
代码中,我们使用response.xpath()方法来获取xml页面中的数据。使用for循环遍历item标签,获取title、link、desc三个标签内的文本数据,使用yield来返回字典类型的数据。
运行爬虫最后,我们同样需要运行scrapy爬虫。在命令行中输入以下命令:
scrapy crawl myspider -o output.json
这个命令会将数据输出到output.json文件中。
三、爬取json数据
创建scrapy项目同样地,我们需要创建一个scrapy项目。打开命令行,输入以下命令:
scrapy startproject myproject
这个命令将会在当前文件夹下创建一个叫做myproject的scrapy项目。
设置起始url在myproject/spiders目录下,创建一个名为spider.py的文件,编辑文件,输入以下代码:
import scrapyclass myspider(scrapy.spider): name = 'myspider' start_urls = ['http://example.com/json'] def parse(self, response): pass
代码中,我们设置了一个名为myspider的spider名称,并设置了一个起始url为http://example.com/json。
解析响应数据继续编辑myproject/spiders/spider.py文件,加入以下代码:
import scrapyimport jsonclass myspider(scrapy.spider): name = 'myspider' start_urls = ['http://example.com/json'] def parse(self, response): data = json.loads(response.body) for item in data['items']: yield { 'title': item['title'], 'link': item['link'], 'desc': item['desc'], }
代码中,我们使用json.loads()方法来解析json格式的数据。使用for循环遍历items数组,获取每个item的title、link、desc三个属性,使用yield来返回字典类型的数据。
运行爬虫最后,同样需要运行scrapy爬虫。在命令行中输入以下命令:
scrapy crawl myspider -o output.json
这个命令会将数据输出到output.json文件中。
四、总结
在本文中,我们介绍了如何使用scrapy分别爬取html、xml、json数据。通过以上例子,你可以了解到scrapy的基本用法,也可以根据需要深入学习更多高级用法,希望能给你在爬虫技术方面提供帮助。
以上就是深度使用scrapy:如何爬取html、xml、json数据?的详细内容。