前期准备,首先要有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. 20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK

    demo代码如下: private void btnPrint_Click(object sender, EventArgs e) { if (this.btnPrint.Text == " ...

  2. RabbitMQ Go客户端教程5——topic

    本文翻译自RabbitMQ官网的Go语言客户端系列教程,本文首发于我的个人博客:liwenzhou.com,教程共分为六篇,本文是第五篇--topic. 这些教程涵盖了使用RabbitMQ创建消息传递 ...

  3. 第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWi ...

  4. PHP代码审计分段讲解(13)

    代码审计分段讲解之29题,代码如下: <?php require("config.php"); $table = $_GET['table']?$_GET['table']: ...

  5. caffe源码 理解链式法则

    网络结构 首先我们抽象理解下一个网络结构是怎样的,如下图所示 F1,F2,F3为某种函数 input为输入数据,output为输出数据 X1,X2为为中间的层的输入输出数据 总体来说有以下关系 X1 ...

  6. mac系统下用ssh方式连接git仓库

    1.应用程序-终端,键入命令  ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  ,后面是你的邮箱地址.一直回车,生成密钥. 2.键入  open ~ ...

  7. Linux shell 获取目录下时间最新的文件的文件名

    ls -lt /dirname/ | grep filename | head -n 1 |awk '{print $9}' 逐条解释: ls -lt /dirname/ 列出此目录下的所有文件并按照 ...

  8. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

    hive 安装完成后创建表的时候出现错误 NestedThrowablesStackTrace:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExce ...

  9. Flink相对于Spark的优点

    Flink相对于Spark的优点 容错 Flink 基于两阶段提交实现了精确的一次处理语义. Spark Streaming 只能做到不丢数据,但是有重复. 反压 Flink 在数据传输过程中使用了分 ...

  10. Spark性能调优篇一之任务提交参数调整

    问题一:有哪些资源可以分配给spark作业使用? 答案:executor个数,cpu per exector(每个executor可使用的CPU个数),memory per exector(每个exe ...