第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Scrapy入門案例——爬取豆瓣電影

標簽:
Python

webp

请谨记如下三条命令:

scrapy startproject xxx    创建scrapy项目
scrapy genspider xxx "xxx.com"  创建爬虫spider,名字不能和项目名一样
scrapy crawl xxx  运行某个爬虫项目

首先scrapy startproject douban 建立项目,其次切换到spiders目录下,scrapy genspider douban_movie 建立爬虫。

webp


我们要爬取的数据很简单,是豆瓣电影排行榜。之所以说它简单是因为它请求返回的数据我们可以转换成规整的json列表,并且获取分页链接也很简单。


webp


我们只获得title和url的信息。明确了请求目标后,我们开始编写items

import scrapyclass DoubanItem(scrapy.Item):
    title = scrapy.Field()
    url = scrapy.Field()

其次编辑spiders下的爬虫文件

# -*- coding: utf-8 -*-import scrapyfrom douban.items import DoubanItemimport jsonclass DoubanMovieSpider(scrapy.Spider):
    name = 'douban_movie'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=0&limit=20']
    offset = 0
    def parse(self, response):
        item = DoubanItem()
        content_list = json.loads(response.body.decode())        if (content_list == []):            return
        for content in content_list:
            item['title'] = content['title']
            item['url'] = content['url']            yield item
        self.offset += 20
        url = 'https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start='+str(self.offset) + '&limit=20'
        yield scrapy.Request(url=url,callback=self.parse)

response.body 获得数据是<class 'bytes'>型,我们需要转换为str型,response.body.decode()。然后通过json.loads()将字符串装换成json 列表,列表里的元素其实就是dict型。

然后保存数据,编辑pipelines.py

import jsonclass DoubanPipeline(object):
    def open_spider(self,spider):        self.file = open("douban.json","w")        self.num = 0
    def process_item(self, item, spider):        self.num+=1
        content = json.dumps(dict(item),ensure_ascii=False)+'\n'
        self.file.write(content)        return item    def close_spider(self,spider):
        print('一共保存了'+str(self.num)+'条数据')        self.file.close()

在运行前需要设置settings.py

#打开这两个注释:USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.15 Safari/537.36'  #模拟浏览器ITEM_PIPELINES = {   'douban.pipelines.DoubanPipeline': 300,
}   #编辑好管道要记得注册管道#ROBOTSTXT_OBEY = True  注释掉robot协议,不然会报错



作者:韵呀
链接:https://www.jianshu.com/p/ac9547e332da


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消