了解了Scrapy工作原理后 ,就要动手写一个爬虫的例子了。
本节以建立爬取 http://books.toscrape.com/ 网站为例,因为这个是经典的研究爬虫的网站。
环境准备:安装Scrapy
用Scrapy创建一个爬虫的步骤如下:
(1)创建scrapy工程
scrapy startproject books_toscrape
(2) 创建爬虫
cd books_toscrape
scrapy genspider toscrape
此时会在spiders目录下产生 toscrape.py
的爬虫spider
(3) 在工程目录下创建调试文件main.py
''':cvar
爬虫的主入口启动文件,便于scrapy启动,调试工作
'''
books_toscrape/main.py
内容如下:
代码语言:javascript复制import os, sys
from scrapy.cmdline import execute
sys.path.append(os.path.dirname(os.path.abspath(file))) #当前main.py的文件夹路径
SPIDER_NAME = "toscrape"
execute(["scrapy", "crawl", SPIDER_NAME])
(4) 配置文件settings.py中的修改
代码语言:javascript复制Obey robots.txt rules
ROBOTSTXT_OBEY = False
(5)在spiders中编写具体的爬取逻辑
代码语言:javascript复制import scrapy
class ToscrapeSpider(scrapy.Spider):
name = 'toscrape'
allowed_domains = ['books.toscrape.com']
start_urls = ['http://books.toscrape.com/'] # 要验证start_urls的合法性
def parse(self, response):
book_list = response.xpath("//ol[@class='row']/li")
# print(book_list)
for book in book_list:
book_title = book.xpath('./article/h3/a/text()').extract_first() # xpath获取网页元素的方法比较灵活,
img_url = book.xpath('./article/div[@class="image_container"]/a/img/@src').extract_first()
print(book_title, img_url)
(6)开始调试
进入main.py
文件,点击右键调试,进入调试模式。
在spiders/toscrape.py
文件中的parse
函数中设置断点,尝试采用xpath解析此页面中的部分书籍数据。
开始进入调试模式,就可以进入scrapy了
【运行结果】:
这个结果只是打印在控制台上,当然也可以按需进行其他处理了。
以上就是运用Scrapy创建的一个简单的爬虫实例,稍微复杂一些的爬虫也是按照这个方式做出来的,只是爬取逻辑不同而已。