前期准备,首先要有python环境+scrapy环境+pycharm环境

一、建立爬虫所需的环境,在命令行输入:

scrapy startproject doubantv  #命名自定义就好

会生成一个名为doubantv的文件夹,cd进入doubantv文件夹,在进入spiders文件夹,执行命令,新建爬虫文件:

scrapy gensipder tv "https://movie.douban.com"  #注明爬虫文件名,要爬取的网址域

然后就可以用pycharm打开doubantv文件了。

二、编写爬虫文件

https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=%E7%94%B5%E8%A7%86%E5%89%A7&start=0#爬取的网址

我们会发现这个页面是通过ajax异步加载来不断获取页面的,通过我们细心的观察不难发现,每次加载页面都会出现一个有规律的网址,也就是上面给出的这个网址。因此我们就可以非常轻松的获取完整的页面信息了。

首先添加想要爬取的字段信息。

由于我们只是个人学习测试使用,所以就随机选择几个字段进行爬取:

在iteam文件编写
import scrapy class DoubantvItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
# 导演
directors = scrapy.Field()
# 评分
rate = scrapy.Field()
# 标题
title = scrapy.Field()
# 跟进连接
url = scrapy.Field()
# 图片
cover = scrapy.Field()

然后就是编写spiders内的爬虫文件了:

编写tv.py

# -*- coding: utf-8 -*-
import json import scrapy
from doubantv.items import DoubantvItem class TvSpider(scrapy.Spider):
name = 'tv'
allowed_domains = ['movie.douban.com']  #爬取域
offset = 0
url = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=%E7%94%B5%E8%A7%86%E5%89%A7&start='  #爬取的链接
  #格式化的url,注意逗号不要少
start_urls = (
url + str(offset),   
)
  #主函数
def parse(self, response):
    #将相应问价转换成json形式
datas = json.loads(response.text)["data"]
    #遍历数组获取内容
for data in datas:
item = DoubantvItem()
# 导演
item['directors'] = data['directors']
# 评分
item['rate'] = data['rate']
# 标题
item['title'] = data['title']
# 跟进连接
item['url'] = data['url']
# 图片
item['cover'] = data['cover']
#传送到管道文件
       yield item
    #获取封面图片url
for data in datas:
# 图片
image = data['cover']
       #传送到管道文件
yield scrapy.Request(image, callback=self.parse)
    #自定义爬取响应地址数,我这里随意设置了一个20000
if self.offset < 20000:
self.offset += 20
       #每次调用函数回滚,重复递归执行
yield scrapy.Request(self.url + str(self.offset), callback=self.parse)

接下来我们编写管道文件:

编写pipelines文件

import os
import urllib
from urllib.request import urlretrieve class DoubantvPipeline(object):
  #初始化响应文件,建立一个doubantv.txt文件,和一个用户存放图片的目录
def __init__(self):
self.filename = open("doubantv.txt", "wb")
self.path = "G:\images\p"
self.page = 0
     #没有就新建一个
if not os.path.exists(self.path):
os.mkdir(self.path)
  #保存文件信息的函数
def process_item(self, item, spider):
print("------------------------------------------------------")
directors = item["directors"]
rate = item["rate"]
title = item["title"]
url = item["url"]
cover = item["cover"]
print("---------------------------------------------------")
    #这里我们随机保存了一个内容
self.filename.write(title.encode('utf-8') + ' '.encode('utf-8') + rate.encode('utf-8') + '\r'.encode('utf-8'))
    #保存图片文件到预定的目录
src = item['cover']
pathname = os.path.join(self.path, str(self.page) + cover + '.jpg')
try:
res = urllib.request.urlopen(src) #下载图片文件
with open(pathname, 'wb') as f:
f.write(res.read())
self.page += 1
except Exception as e:
print(e)
return item
  #关闭文件,释放内存
def colse_spider(self, spider):
self.filename.close()

然后执行爬虫文件:

在跟目录下执行

scrapy crawl tv

耐性等待片刻后。。。

去他*的世界 第二季   9.2
致命女人 第一季 9.3
去他*的世界 第一季 9.1
摩登情爱 第一季 8.7
鹤唳华亭 7.4
从前有座灵剑山 7.4
美国恐怖故事:1984 第九季 7.4
谍战深海之惊蛰 6.5
请回答1988 9.7
。。。。。。。。。

OVER

python-scrapy框架爬取某瓣电视剧信息--异步加载页面的更多相关文章

  1. 使用scrapy框架爬取全书网书籍信息。

    爬取的内容:书籍名称,作者名称,书籍简介,全书网5041页,写入mysql数据库和.txt文件 1,创建scrapy项目 scrapy startproject numberone 2,创建爬虫主程序 ...

  2. Python scrapy框架爬取瓜子二手车信息数据

    项目实施依赖: python,scrapy ,fiddler scrapy安装依赖的包: 可以到https://www.lfd.uci.edu/~gohlke/pythonlibs/  下载 pywi ...

  3. python scrapy框架爬取豆瓣

    刚刚学了一下,还不是很明白.随手记录. 在piplines.py文件中 将爬到的数据 放到json中 class DoubanmoviePipelin2json(object):#打开文件 open_ ...

  4. python爬虫 selenium 抓取 今日头条(ajax异步加载)

    from selenium import webdriver from lxml import etree from pyquery import PyQuery as pq import time ...

  5. 使用scrapy框架爬取自己的博文(2)

    之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...

  6. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  7. 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!

    一.出发点: 之前在知乎看到一位大牛(二胖)写的一篇文章:python爬取知乎最受欢迎的妹子(大概题目是这个,具体记不清了),但是这位二胖哥没有给出源码,而我也没用过python,正好顺便学一学,所以 ...

  8. scrapy框架爬取笔趣阁完整版

    继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...

  9. scrapy框架爬取笔趣阁

    笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...

随机推荐

  1. day1(初始化项目结构)

    1.初始化项目结构  └─shiyanlou_project    │  .gitignore    │  README.en.md           # 英文    │  README.md    ...

  2. 关于将Linux中默认的OpenJDK替换为JDK的方法

    首先下载需要的jdk安装包,后缀建议.tar.gz,本文中以jdk-8u212-linux-x64.tar.gz为例,地址就在oracle官网. 将安装包下载到linux环境后,使用命令tar -xz ...

  3. k8s 节点 notReady问题解决流程

    1.在k8smaster 服务器检查节点状态 kubectl describe nodes  aaaa #没有报错,异常信息   2.在节点上检查kubelet服务状态 netstat -tlanp| ...

  4. element ui中表格table翻页记忆勾选状态

    <el-table ref="multipleTable" :data="datalist" style="width:100%" @ ...

  5. Codeforces Edu Round 48 A-D

    A. Death Note 简单模拟,可用\(\%\)和 \(/\)来减少代码量 #include <iostream> #include <cstdio> using nam ...

  6. AcWing 199. 余数之和

    \(\sum_{i = 1}^{n} k \bmod i = n * k - \sum_{i = 1}^{n} \lfloor k / i \rfloor * i\) 显然,\(\lfloor k / ...

  7. 题解-Magic Ship

    Magic Ship 你在 \((x_1,y_1)\),要到点 \((x_2,y_2)\).风向周期为 \(n\),一个字符串 \(s\{n\}\) 表示风向(每轮上下左右),每轮你都会被风向吹走一格 ...

  8. Springboot mini - Solon详解(三)- Solon的web开发

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  9. STL——容器(Set & multiset)的查找

    1. set.find(elem); //查找elem元素,返回指向elem元素的迭代器. 1 #include <iostream> 2 #include <set> 3 4 ...

  10. Spring源码分析之AOP从解析到调用

    正文: 在上一篇,我们对IOC核心部分流程已经分析完毕,相信小伙伴们有所收获,从这一篇开始,我们将会踏上新的旅程,即Spring的另一核心:AOP! 首先,为了让大家能更有效的理解AOP,先带大家过一 ...