docker+scrapy+scrapy_splash爬取大麦网
文章目录
- 背景
- 开始
- 起初
- 思考
- 动手
- 下载并配置docker
- 拉取镜像并启动
- 爬取网页
- 爬取结果
- 总结
背景
今天拿到个代码需要改改,他是用scrapy爬取大麦网,然后我改了将近一个小时还是得不到内容,第一是太久没用scrapy写爬虫,其次也是因为当时思路太死板,忘了一些重要的细节问题,所以导致一直改不好代码。然后点了个外卖,继续想这个问题。
开始
起初
一开始我还是自己重新搭了一个scrapy的基本框架出来,还是那两句代码
scrapy startproject 项目名
生成一个项目
scrapy genspider 爬虫名 网址
生成爬虫,需要自己编写解析函数
然后开始写解析函数以及配置setting中相关的设置
但是运行会发现没有结果返回,查看运行日志发现成功请求到网页,但是得不到相关的信息。用print打印css选择的内容发现返回的内容是[],也就是没有得到内容。
思考
第一反应是不应该啊,明明网页都是正常请求到的,怎么会得不到信息呢?
想了一会,然后仔细看了一下请求得到的网页内容,发现关于门票那些内容并没有,恍然大悟。这不就是动态网页吗?然后去看了一下,果然就发现了js渲染的内容
一般这种情况我都是直接requests访问这个网页,然后解析出数据就好,但是今天我和scrapy杠上了,难道scrapy就不能爬取动态网页了吗?然后我尝试了用selenium去请求网页,这样就可以得到网页内容,但是返回的信息和scrapy框架本身的css、xpath选择器兼容性太差,那还不如直接请求用beautifulsoup或者lxml解析。然后去百度了一番,发现了scrapy_splash这个库,于是开始动手尝试。
动手
安装scrapy_splash并不难,pip install scrapy_splash
就行,但是需要下载docker,因为scrapy_splash必须在docker中使用。
下载并配置docker
去官网下载docker,然后安装。这没什么难度,安装好之后需要重启一次电脑。然后就是配置镜像源,不然的话拉取镜像会失败的。去阿里云弄一个镜像加速器,然后配置到docker的setting中
关于配置镜像加速器的博客
然后apply,重启docker
拉取镜像并启动
拉取镜像
docker pull scrapinghub/splash
启动
docker run -p 8050:8050 scrapinghub/splash
输入地址去render一下,如果得到了完整的页面就说明渲染成功,那我们就可以使用scrapy爬取了
已经得到了我们想要的内容,所以直接爬取就好
爬取网页
spider.py
import scrapy
from damai.items import DamaiItem
from scrapy_splash import SplashRequestclass SpiderSpider(scrapy.Spider):name = 'spider'start_urls = ['https://www.damai.cn/']def start_requests(self):splah_args = {"lua_source": """function main(splash, args)assert(splash:go(args.url))assert(splash:wait(3))return {html = splash:html(),png = splash:png(),har = splash:har(),}end"""}start_url = 'https://www.damai.cn/'headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36'}yield SplashRequest(url=start_url, callback=self.parse, args={'wait': 1.0},headers=headers)def parse(self, response):#print(response.text)item = DamaiItem()info=response.css('.iteminfo')#print(info)for i in info:item['title']=i.css('.title::text').extract_first()item['address']=i.css('.venue::text').extract_first()item['showtime']=i.css('.showtime::text').extract_first()item['price']=i.css('.price::text').extract_first()yield item
另外的配置我就贴图啦,代码量很少
至于setting就自己去配置啦,这个也简单
爬取结果
总算是都爬下来了,睡觉去了。
总结
太久不敲代码真的会生疏,明明一个动态网页的问题居然第一时间没反应过来,花了几个小时做这个简单的不为了别的,起码对于不懂得或者遗忘的东西应该立马回顾一下,老说温故而知新,这不以后动态网页用scrapy爬取的套路我也会了嘛。也希望那个同学也能看到这个博客吧,昨天没帮到忙挺不好意思的。
docker+scrapy+scrapy_splash爬取大麦网相关推荐
- 《结对-爬取大麦网近期演唱会信息-结对项目总结》
1.项目名称: 爬取大麦网近期演唱会信息 2.主要功能: 爬取大麦网近期演唱会信息并显示 3.开发过程: 1)搭建环境: 下载Python 安装Python 下载PyCharm 安装PyCharm 启 ...
- 《结对-爬取大麦网演唱会信息-设计文档》
结对编程成员:阎大为,张跃馨 搭建环境: 1.安装Python 网址:https://www.python.org/ 2.安装Pycharm 网址:http://www.jetbrains.c ...
- 结对-爬取大麦网演唱会信息-设计文档
结对编程成员:阎大为,张跃馨 搭建环境: 1.安装python2.7 2.安装beautifulsoup4等相关模块 编写程序阶段: 1.分析html代码以及了解相关参数 2.写代码,爬取网站 ...
- 用Scrapy框架爬取豆瓣电影,构建豆瓣电影预测评分模型
文章目录 前言 一.Scrapy爬虫爬取豆瓣电影 1. Scrapy框架介绍 (1) Scrapy框架构造: (2) 数据流 (3) 项目结构 2. 创建爬虫爬取豆瓣 (1)创建项目 (2) 创建It ...
- 利用python的scrapy框架爬取google搜索结果页面内容
scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...
- 基于Scrapy框架爬取豆瓣《复联4》影评,并生成词云
基于Scrapy框架爬取豆瓣<复联4>影评,并生成词云 1. 介绍及开发环境 2. 爬虫实现 2.1 新建项目 2.2 构造请求 2.3 提取信息 2.4 数据存储 2.4 运行结果 3. ...
- 03_使用scrapy框架爬取豆瓣电影TOP250
前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关 ...
- Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB
通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...
- python大乐透代码_scrapy框架爬取大乐透数据
上次做了一个双色球的数据爬取,其实大乐透的爬取也很简单,使用request就可以爬取,但是为了更好的进步,这次爬取大乐透采用了scrapy框架. scrapy框架的运行机制不介绍了,不懂的先去goog ...
- python之scrapy实战爬取表情包
python之scrapy实战爬取表情包 前言:在之前我们学习了scrapy框架的基本使用,今天我们通过实战(爬取http://www.doutula.com的套图)来更加了解scrapy框架额使用, ...
最新文章
- android怎么播放音频,Android播放音频的两种方式
- 快速排序 python菜鸟教程-Python菜鸟文本处理4种方法
- Day 29:编写你的第一个 Google Chrome 扩展程序
- 修改 IE 查看源文件默认工具
- MAC 设置$PATH 关闭terminal后就失效 解决方案
- python的模块(module)和包(package)
- Win7开机动画图片下载大全 修改攻略
- C#调用阿里云短信接口
- Java 生成条形码 订单条形码
- torch.cat()函数用法
- markdown的标题设置自动添加序号
- 下拉框触发单击事件_谈谈如何给下拉框option添加点击事件?
- 移动APP性能测试指标
- 文献综述在论文中的应用
- 基于Wireshark的TCP SACK重传介绍
- R语言LR逻辑回归实例
- 决策树算法_基本思想
- `Computer-Algorithm` 二分图BipartiteGraph,最大匹配,最小点覆盖,最大独立集
- 分享一个专门提供MV下载的博客
- 可视化例子(12)——ECharts堆叠直方图
热门文章
- 360主机卫士linux安装软件,最新360主机卫士Linux专杀版下载 0.4.1 官方版(32位+64位)下载地址电脑版-CC软件...
- 【数据清理与特征工程】2-数据清理
- Canvas实现太极图案并旋转
- 嵌入式软件开发学习路线
- 电脑使用技巧提升篇10:电脑文件夹加密
- java英语流利_day186-2018-12-23-英语流利阅读-待学习
- 泰坦尼克号生存预测python_用Python预测泰坦尼克号生存情况
- 计算机软件毕业论文模板,计算机软件毕业论文提纲模板
- 博图——生成和导入外部源文件
- 文件下载之断点续传(客户端与服务端的实现)