前期准备,首先要有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. mySQL初学者一定要掌握的数据操纵

    本文献给与作者一样不断地在追求梦想的小伙伴! 文章目录 1.INSERT 语句为表中所有字段添加数据 (1)可以指定所有字段名添加数据 (2)可以不指定字段名添加数据 (3)可以指定部分字段添加数据 ...

  2. Python正则表达式re模块学习遇到的问题

    Python正则表达式处理的组是什么? Python正则表达式处理中的匹配对象是什么? Python匹配对象的groups.groupdict和group之间的关系 Python正则表达式re.mat ...

  3. Mybatis学习03

    title: Mybatis学习03 date: 2020-01-19 13:03:20 tags: Mybatis学习的第二天,内容有日志和分页. <!--more--> 1.日志 1. ...

  4. Microsoft工具之Disk2vhd

    Official documents:https://docs.microsoft.com/zh-cn/sysinternals/downloads/disk2vhd 1.Introduction D ...

  5. Autofac 动态获取对象静态类获取对象

    Autofac 从容器中获取对象 静态类或Service场景可以动态,可以直接动态获取对象 /// <summary> /// 从容器中获取对象 /// </summary> ...

  6. 彻底搞懂js __proto__ prototype constructor

    在开始之前,必须要知道的是:对象具有__proto__.constructor(函数也是对象固也具有以上)属性,而函数独有prototype 在博客园看到一张图分析到位很彻底,这里共享: 刚开始看这图 ...

  7. sql server的bcp指令

    有时需要允许bcp指令 -- 允许配置高级选项EXEC sp_configure 'show advanced options', 1GO-- 重新配置RECONFIGUREGO-- 启用xp_cmd ...

  8. uwsgi+nginx 基于linux的各种离谱错误

    1.常见的排查方法 1.nginx错误 启动报错 systemctl restart nginx tail -f /var/log/nginx/error.log 在浏览器中访问抱错 tail -f ...

  9. 电脑获取手机app内的scheme

    做app开发,有时需要跳转打开外部的app应用,来促成引流或者分享等,这个时候就需要通过scheme跳转协议来完成. 使用scheme跳转外部app,就需要配置对应app的scheme,那这个sche ...

  10. Hexo使用思维导图插件

    进入Hexo博客的根目录,执行下面命令安装插件 npm install hexo-simple-mindmap 添加思维导图格式,按层级顺序 {% pullquote mindmap mindmap- ...