python-scrapy框架爬取某瓣电视剧信息--异步加载页面
前期准备,首先要有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框架爬取某瓣电视剧信息--异步加载页面的更多相关文章
- 使用scrapy框架爬取全书网书籍信息。
爬取的内容:书籍名称,作者名称,书籍简介,全书网5041页,写入mysql数据库和.txt文件 1,创建scrapy项目 scrapy startproject numberone 2,创建爬虫主程序 ...
- Python scrapy框架爬取瓜子二手车信息数据
项目实施依赖: python,scrapy ,fiddler scrapy安装依赖的包: 可以到https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载 pywi ...
- python scrapy框架爬取豆瓣
刚刚学了一下,还不是很明白.随手记录. 在piplines.py文件中 将爬到的数据 放到json中 class DoubanmoviePipelin2json(object):#打开文件 open_ ...
- python爬虫 selenium 抓取 今日头条(ajax异步加载)
from selenium import webdriver from lxml import etree from pyquery import PyQuery as pq import time ...
- 使用scrapy框架爬取自己的博文(2)
之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...
- Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)
1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...
- 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!
一.出发点: 之前在知乎看到一位大牛(二胖)写的一篇文章:python爬取知乎最受欢迎的妹子(大概题目是这个,具体记不清了),但是这位二胖哥没有给出源码,而我也没用过python,正好顺便学一学,所以 ...
- scrapy框架爬取笔趣阁完整版
继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...
- scrapy框架爬取笔趣阁
笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...
随机推荐
- day1(初始化项目结构)
1.初始化项目结构 └─shiyanlou_project │ .gitignore │ README.en.md # 英文 │ README.md ...
- 关于将Linux中默认的OpenJDK替换为JDK的方法
首先下载需要的jdk安装包,后缀建议.tar.gz,本文中以jdk-8u212-linux-x64.tar.gz为例,地址就在oracle官网. 将安装包下载到linux环境后,使用命令tar -xz ...
- k8s 节点 notReady问题解决流程
1.在k8smaster 服务器检查节点状态 kubectl describe nodes aaaa #没有报错,异常信息 2.在节点上检查kubelet服务状态 netstat -tlanp| ...
- element ui中表格table翻页记忆勾选状态
<el-table ref="multipleTable" :data="datalist" style="width:100%" @ ...
- Codeforces Edu Round 48 A-D
A. Death Note 简单模拟,可用\(\%\)和 \(/\)来减少代码量 #include <iostream> #include <cstdio> using nam ...
- AcWing 199. 余数之和
\(\sum_{i = 1}^{n} k \bmod i = n * k - \sum_{i = 1}^{n} \lfloor k / i \rfloor * i\) 显然,\(\lfloor k / ...
- 题解-Magic Ship
Magic Ship 你在 \((x_1,y_1)\),要到点 \((x_2,y_2)\).风向周期为 \(n\),一个字符串 \(s\{n\}\) 表示风向(每轮上下左右),每轮你都会被风向吹走一格 ...
- Springboot mini - Solon详解(三)- Solon的web开发
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- STL——容器(Set & multiset)的查找
1. set.find(elem); //查找elem元素,返回指向elem元素的迭代器. 1 #include <iostream> 2 #include <set> 3 4 ...
- Spring源码分析之AOP从解析到调用
正文: 在上一篇,我们对IOC核心部分流程已经分析完毕,相信小伙伴们有所收获,从这一篇开始,我们将会踏上新的旅程,即Spring的另一核心:AOP! 首先,为了让大家能更有效的理解AOP,先带大家过一 ...