使用scrapy 框架来抓取100部美剧的信息
在开始爬取之前,必须创建一个新的 Scrapy 项目。进入自定义的项目目录中,运行下列命令:
创建项目命令
scrapy startproject 项目名称
切换到项目下
cd 项目名称目录
同时找到项目所见的文件夹 ,使用pycharm打来开(我用的是pycharm) 大致结构如下
下面来简单介绍一下各个主要文件的作用:
scrapy.cfg :项目的配置文件
mySpider/ :项目的 Python 模块,将会从这里引用代码
mySpider/items.py :项目的目标文件
mySpider/pipelines.py :项目的管道文件
mySpider/settings.py :项目的设置文件
mySpider/spiders/ :存储爬虫代码目录
在上一篇提到了整个爬取时的流程,今天我们实战一下 ,使用美剧100这个网站来爬取数据
创建美剧100的项目爬取文件
在之前的cmd命令行下输入,scrapy genspider s_mj100 meijutt.com
结构是 scrapy genspider + 文件名称 + 需要爬取的网站的域名
重新打开pycharm
接下来明确我们需要爬取的内容,在items中写好我们定义的字段(可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field 的类属性来定义一个Item(可以理解成类似于 ORM 的映射关系)。)
接下来就可以在我们新建的爬虫文件下写我们的代码了
记住在items下写好字段后需要将items导入到我们的爬取文件下,实例化调用
使用scrapy框架,不需要我们手动请求,框架底层会将请求的结果直接返回给我们使用
我们直接处理返回的内容
如果需要进行二次请求,直接使用callback方法,再写一个函数处理就可以了
拿到我们想要的数据后,打开settings下的pipelines 保存数据
在pipelines中
保存文件
完成!!!!
代码如下
# -*- coding: utf-8 -*-
import scrapy
from day0510.items import MJItem
from lxml import etreeclass SMj100Spider(scrapy.Spider):name = 's_mj100'allowed_domains = ['www.meijutt.com']start_urls = ['https://www.meijutt.com/new100.html']def parse(self, response):content = response.body.decode('gb2312')response = etree.HTML(content)li_list = response.xpath('//ul[@class="top-list fn-clear"]/li')for li in li_list:index = li.xpath('./div[1]/i/text()')[0]name = li.xpath('./h5/a/text()')[0]state = li.xpath('./span[1]/font/text()')[0]try:word = li.xpath('./span[1]/font/span/em/text()')word = word[0]except:word = '本季终'type = li.xpath('./span[2]/text()')[0]tv = li.xpath('./span[3]/text()')[0]time = li.xpath('./div[2]//text()')[0]detail_url = li.xpath('./h5/a/@href')[0]detail_url = 'https://www.meijutt.com' +detail_urlitem = MJItem()item['index'] = indexitem['name'] = nameitem['state'] = stateitem['name'] = nameitem['word'] = worditem['type'] = typeitem['tv'] = tvitem['time'] = time# yield itemyield scrapy.Request(url=detail_url,meta={'data':item,'phantomjs':True},callback=self.parse_detail)def parse_detail(self,response):item = response.metayield item
使用scrapy 框架来抓取100部美剧的信息相关推荐
- 使用Scrapy框架,爬取b站番剧信息。
使用Scrapy框架,爬取b站番剧信息. 感觉好久没写爬虫的,今天看了在b站浏览了一会儿,发现b站有很多东西可以爬取的,比如首页的排行榜,番剧感觉很容易找到数据来源的,所以就拿主页的番剧来练练手的. ...
- Scrapy 框架简介 抓取一点资讯
什么是scrapy ? 1 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛 2 Scrapy 使用了 Twisted['twɪstɪd](其主要对 ...
- monty python喜剧-看美剧学托福:最受美国人喜欢的100部美剧
在之前做了一个百大电影的清单之后,好莱坞知名媒体THR再次发布年度重量级策划,他们邀请了2800多名好莱坞影视从业人员,包括779名演员,365名制片人,268名导演等等,由他们选出自己最爱的剧集(主 ...
- monty python喜剧-【网络小说网中心】最经典的100部美剧,看到第一名瞬间服气!
好莱坞知名媒体THR<好莱坞报道者>,邀请了2800多名好莱坞影视从业人员,包括779名演员,365名制片人,268名导演等等, 由他们选出自己最爱的剧集,最终汇总成为这个百大经典美(英) ...
- Python爬虫实战之二 - 基于Scrapy框架抓取Boss直聘的招聘信息
Python爬虫实战之三 - 基于Scrapy框架抓取Boss直聘的招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于 ...
- 使用python3.7中的scrapy框架,爬取起点小说
这几天在学习scrapy框架,感觉有所收获,便尝试使用scrapy框架来爬取一些数据,对自己阶段性学习进行一个小小的总结 本次爬取的目标数据是起点中文网中的免费作品部分,如下图: 本次一共爬取了100 ...
- scrapy爬虫之抓取《芳华》短评及词云展示
简介 在scrapy爬虫之<琅琊榜2>话题title收集及词云展示 及scrapy爬虫之模拟登录豆瓣l 两篇博文中,我们分别实现了直接爬取内容及模拟登陆豆瓣,现在我们将这两个功能整合到一起 ...
- 手把手教你使用scrapy框架来爬取北京新发地价格行情(理论篇)
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 博观而约取,厚积而薄发. 大家好! ...
- Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图
Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图 1. 创建项目 2. 使用ImagesPipeline爬取数据 items.py setings.py aut ...
最新文章
- 【问题解决】Processing库安装方法简介
- c语言程序设计多数求最大值,C语言编程问题存在三个整数,使x²+y²+z²=625,求x+y+z的最大值。这是大一C语言实验书的习题,请不要用过于复杂的算法语句...
- Docker: vmware企业级docker镜像私服--Harbor的搭建
- php date( ymd_PHP-date(),time()函数的应用
- 批处理创建程序的快捷方式
- Linux下文件的多进程拷贝
- VVDocumenter 使用
- Java知识点总结(Java容器-ArrayList)
- NFrog[NHibernate代码工具]发布第一个版本
- 10分钟学习简略五子棋 源码+注释教学
- 第 6 章 MybatisPlus 代码生成器
- 原声socket 向服务端发长连接
- echarts地图展示
- python期货自动交易_3自动交易模块_python量化交易_Python视频-51CTO学院
- 线程、进程、多线程、多进程 和 多任务 小结
- 001.学习Python之-设置你的操作系统的环境变量,以便可以轻松进入 Python 环境
- docker logs 说明
- 基于TextRank算法的单领域多文本摘要(英文摘要)
- 多媒体个人计算机能处理什么,多媒体计算机可以处理的信息类型有什么?
- Datawhale 7月学习——李弘毅深度学习:回归
热门文章
- Best Time to Buy and Sell Stock III
- STM32控制舵机转动_从0到1
- PE中Ghost 使用详解
- Linux C 库打桩技术
- 爬虫 抖音用户页 所有无水印视频 批量下载 最新 (2021-3-18 可用--失效我会更新)
- 【可视化】rviz下的kitti数据集可视化(1)
- 移动浏览器内核及连接数
- 2021年高考全国理科数学I卷数学压轴题的证明
- undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocat
- 定义一个教师类输出他的基本信息,类和静态的练习--C#