1.3.4 实现spider
分析完页面之后,接下来我们来编写爬虫。在scrapy中编写爬虫,即实现一个scrapy.Spider的子类
实现爬虫的Python文件应该位于spiders文件夹下,这里我们创建一个名叫books_spider.py的爬虫,其代码如下:
import scrapy
class BookSpider(scrapy.Spider):
name = 'books'
start_urls = ['http://books.toscrape.com']
def parse(self, response):
for book in response.css('article.product_pod'):
name = book.xpath("./h3/a/@title").get()
price = book.css("p.price_color::text").get()
yield {
"name" : name,
"price" : price
}
next_url = response.css("ul.pager li.next a::attr(href)").get()
if next_url:
next_url = response.urljoin(next_url)
yield scrapy.Request(next_url,callback=self.parse)
这里对这段代码做一个简单的说明
- name属性
一个scrapy项目中可能有很多爬虫,每个爬虫的name属性是其自身的唯一标识,在一个项目中不可能有同名的- start_urls属性
一个爬虫要从某个(或者某些)页面开始爬取,我们称这样的页面为起始爬取点,start_urls属性用来设置一个爬虫的起始爬取点- parse 方法
当一个页面下载完成之后,Scrapy引擎会调一个我们指定的页面解析函数(默认为parse)解析页面 。一个页面解析函数通常需要完成以下两个任务:
– 提取页面中的数据
– 提取页面中的链接
页面解析函数通常被实现成一个生成器函数,每一项从页面中提取的数据以及每一个对链接页面的
下载请求都由yield语句提供给scrapy引擎
1.3.5 运行爬虫
完成代码后运行爬虫,这里可以在shell中执行“scrapy crawl books -o books.json”将爬取的信息保存在books.json文件中,这里我们不适用json格式,我们执行“scrapy crawl books -o books.csv”将数据保存为csv的格式。觉得在shell中执行不太方便的话,我这里推荐使用Python文件来执行命令:在项目最开头创建一个start_command.py文件,里面输入
from scrapy import cmdline
command = 'scrapy crawl books -o books.csv'
cmdline.execute(command.split())
然后右键执行,这里就能运行爬虫了。等爬虫运行结束,在start_command.py同级目录下会出现一个books.csv的文件(前面我没有说明start_command.py的位置,这里进行补充)打开books.csv文件:
name,price
A Light in the Attic,£51.77
Tipping the Velvet,£53.74
Soumission,£50.10
Sharp Objects,£47.82
Sapiens: A Brief History of Humankind,£54.23
The Requiem Red,£22.65
The Dirty Little Secrets of Getting Your Dream Job,£33.34
"The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull",£17.93
The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics,£22.60
The Black Maria,£52.15
"Starving Hearts (Triangular Trade Trilogy, #1)",£13.99
Shakespeare's Sonnets,£20.66
Set Me Free,£17.46
Scott Pilgrim's Precious Little Life (Scott Pilgrim #1),£52.29
Rip it Up and Start Again,£35.02
"Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991",£57.25
Olio,£23.88
Mesaerion: The Best Science Fiction Stories 1800-1849,£37.59
Libertarianism for Beginners,£51.33
这里给出前20本书的名字和价格
本文介绍如何使用Scrapy框架实现一个爬虫,以抓取书籍的名称和价格信息。通过创建名为books_spider的爬虫类,设置起始URL,并定义parse方法来解析页面,提取数据并跟踪页面链接。最后,通过执行命令将爬取的数据保存为CSV格式。
65万+

被折叠的 条评论
为什么被折叠?



