第一个scrapy爬虫

xiaoxiao2021-02-28  29

scrapy目录结构如下

我们要爬取的是读书网里面的书名,作者,和对书的描写

首先我们要定义爬取数据的模型,在items.py文件中

import scrapy class MoveItem(scrapy.Item): # 定义爬取的数据的模型 title = scrapy.Field() auth = scrapy.Field() desc = scrapy.Field()

主要的还是spiders目录下的move.py文件

import scrapy from douban.items import MoveItem class MovieSpider(scrapy.Spider): # 表示蜘蛛的名字,每个蜘蛛的名字必须是唯一的 name = 'movie' # 表示过滤爬取的域名 allwed_domians = ['dushu.com'] # 表示最初要爬取的url start_urls = ['https://www.dushu.com/book/1188.html'] def parse(self,response): li_list = response.xpath('/html/body/div[6]/div/div[2]/div[2]/ul/li') for li in li_list: item = MoveItem() item['title'] = li.xpath('div/h3/a/text()').extract_first() item['auth'] = li.xpath('div/p[1]/a/text()').extract_first() item['desc'] = li.xpath('div/p[2]/text()').extract_first() # 生成器 yield item href_list = response.xpath('/html/body/div[6]/div/div[2]/div[3]/div/a/@href').extract() for href in href_list: # 把在页面上爬取的url补全 url = response.urljoin(href) # 一个生成器,response的里面链接,再进行子request,不断执行parse,是个递归。 yield scrapy.Request(url=url,callback=self.parse)

想要持久化数据只有把数据保存起来:在settings.py文件里设置

在pipelines.py文件里:

import pymongo class DoubanPipeline(object): def __init__(self): self.mongo_client = pymongo.MongoClient('mongodb://39.108.188.19:27017') def process_item(self, item, spider): db = self.mongo_client.data message = db.messages message.insert(dict(item)) return item
转载请注明原文地址: https://www.6miu.com/read-2400041.html

最新回复(0)