Scrapy框架

安装Scrapy框架

pip install scrapy

Scrapy命令

scrapy startproject 项目名称 #创建scrapy项目文件夹
cd 项目名称 #进入项目文件夹
scrapy genspider 爬虫名称 允许爬取的域名 # 创建爬虫文件

例如

scrapy startproject doubantop250 #创建名为doubantop250的项目文件夹
cd doubantop250 #进入doubantop250文件夹
scrapy genspider douban movie.douban.com/top250 #规定爬虫名称和允许爬取的域名

完成后打开如下

在这里插入图片描述

爬虫代码及有关设置

打开settings.py
修改以下设置

# 第十七行 
USER_AGENT = '自己电脑中user-agent的数值'
# 第二十行 
ROBOTSTXT_OBEY = False

打开douban.py
导入所需要的库

import scrapy #创建scrapy时自动导入的库
from scrapy import Selector # 导入css选择器模块
from doubanmovietop250.items import Doubanmovietop250Item #导入文件夹中的item文件便于存储指定数据
from scrapy.http import HtmlResponse #导入HtmlResponse模块便于构造css选择器对象
from scrapy import Request #导入request模块用于获取网页源码

注意:start_urls 里面的内容要改为[‘http://movie.douban.com/top250’]
获取网页源码

import scrapy
from scrapy import Selector
from doubanmovietop250.items import Doubanmovietop250Item
from scrapy.http import HtmlResponse
from scrapy import Request


class DoubanSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['movie.douban.com']
    start_urls = ['http://movie.douban.com/top250'] #修改之后的开始网址

    def parse(self, response):
        print(response.text) #将pass删除,response.text为获取网页源码

源码提取信息并传入item文件内

import scrapy
from scrapy import Selector
from doubanmovietop250.items import Doubanmovietop250Item
from scrapy.http import HtmlResponse
from scrapy import Request


class DoubanSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['movie.douban.com']

#以下第一个函数为重写start_requests意为爬取全部的250条电影数据
    def start_requests(self):
        for page in range(10):
            yield Request(url=f'https://movie.douban.com/top250?start={page*25}&filter=')


    def parse(self, response: HtmlResponse, **kwargs):
        sel = Selector(response) #构造选择器对象
        list_items = sel.css('#content > div > div.article > ol > li') #确定每一个页面电影的数据列表
        for list_item in list_items:
            movie_item = Doubanmovietop250Item()
            movie_item['title'] = list_item.css('span.title::text').extract_first() #电影名称
            movie_item['rank'] = list_item.css('span.rating_num::text').extract_first()#电影评分
            movie_item['subject'] = list_item.css('span.inq::text').extract_first() #电影简介
            yield movie_item #生成器将数据传给items.py
            print(movie_item['title'])

items.py文件修改

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class Doubanmovietop250Item(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()  # 标题字段
    rank = scrapy.Field()  # 评分字段
    subject = scrapy.Field()  # 主题字段

存储

**如果保存为csv文件:**scrapy crawl douban -o douban.csv

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K1753

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值