怎样利用scrapy获取网页源码

bodyhd 2015-11-18 01:32:36
我最近做了几个爬虫的项目,分别用scrapy和自己写的代码,发现在爬去大量页面的时候(100页以上),自己的代码在执行page = urllib2.urlopen(urllib2.Request(URL)).read()时有时会非常慢(因为网速问题),scrapy在获取网页源码方面效率高出十几倍。请问
1scrapy获取网页源码的原理是什么?parse(self, response)中的response是哪里来的?
2怎样在我的程序中通过import scrapy 直接得到这个response?
3我发现start_urls中的url并不是按顺序执行的,似乎是多线程执行的。但是我通过任务管理器查看命令行的线程数,只有1个线程啊。scrapy是通过多线程的方式提高爬取速度的吗?

多谢各位的帮助!
...全文
933 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
beishen7234 2017-08-20
  • 打赏
  • 举报
回复
urllib慢?不会你是直接print(urllib2.urlopen(urllib2.Request(URL)).read())了吧?需要decode的
首先一定要知道 Scrapy爬虫框架 对新手非常的不友好,或者从某些视频网站上跟着视频学或者说从培训机构里学几天技能掌握的,主要原因有以下两个方面。框架模块内容太多,虽然只是实现了一个简单的爬虫工作,但是实际上完成一个页面的抓取在框架里最少要走8个以上的步骤,但是这些步骤都是基本都是依靠配置文件完成的,没有丰富的爬虫经验,这些模块很多都不知道是做什么的,也不知道怎么配置。基于框架内进行数据抓取仅限于那些通用的网站抓取,你就简单理解为一个完成重复工作的机器人就行了。但是如果是那种反爬比较厉害的网站那就是另外一种情况了,完全是爬虫工程师和网站开发者的一个博弈了,所以这种情况不适合任何一种爬虫框架。对于那些想在工作中摸鱼的Python工程师来说就一定要使用爬虫框架,你会发现省不少力气而且效率真心非常高,不过一切都是在对框架熟练掌握的基础上、和对业务的深刻理解来说来说。但凡说 Scrapy 无用的基本上没有认真阅读过 Scrapy源码,对于 Scrapy框架 中的众多功能在搭建爬虫系统的时候能想到用几个?而且是基本是没有做过大型的爬虫系统项目的。咱们倒着推这个事,你就知道为什么要用Scrapy框架了。我之前的单位是国家互联网的新闻中心,做的项目中的有一项是复现863课题舆情监控系统中的内容,使用的方法是 Scrapy爬虫框架 结合 Django Web 搭建的数据采集系统,抓取的目标对象包括新闻、博客、论坛等等,其中每天目标检测网站成千上万,如果不用框架去做这种数据采集得累死。1.抓取的数据存哪里?单纯Scrapy爬虫脚本写好了执行抓取任务时数据保存到哪里?ES、Mongodb、MySQL?如果做过开发的人都知道存 Mongodb 中,那些说把数据存到 MySQL 的人基本上99%是从培训机构里出来的,因为大多数培训机构爬虫是不讲 Mongodb 的。通过业务计算逻辑把数据传输到生产 ES 环境中。2.几千、几万个爬虫脚本应该怎么管理?很多刚入行的人都觉得爬虫脚本难写,其实并不是这样。最难的是如何管理密密麻麻数不清的爬虫脚本,这里介绍Python如何处理这个事情。管理方式无非集中,Web管理环境、GUI管理环境、手动管理环境,不管是哪一种都需要一定的开发基础和管理思路。比较省事的用别人写好的Scrapy管理框架,比如Gerapy爬虫管理框架。如同这样web直接一键管理爬虫脚本,更多内容看上面的文章,这里就不重复了。3.Scrapy如何面对反爬的?跟大多数单线抓取某个网站解决其反爬一样,只要把反爬的逻辑设置好,比如最简单的更换代理IP,更换header,解析JS生成cookie访问等等,都可以在框架中设置配置文件。4.如何提高代码编写效率以及数据爬取效率?一定要阅读源码,一定要阅读源码,一定要阅读源码你才能知道这个框架里到底有什么内容可以用。5.基于Python各种框架开发的爬虫定制化项目。
项目概述:本项目是一个基于Python语言的职位画像系统,集成了Scrapy与Django框架,实现了数据抓取与Echarts可视化展示。该系统主要由Python、HTML、JavaScript、CSS和Shell等多种语言编写,包含532个文件,其中HTML文件108个,JavaScript文件102个,GIF图像75个,以及其他多种资源文件。 核心功能: 1. 数据抓取:利用Scrapy框架高效抓取各大招聘网站的职位信息。 2. 数据可视化:通过Django框架与Echarts相结合,对抓取到的职位数据进行多样化、交互式的图表展示。 技术构成: - Python:核心编程语言,用于构建整个系统的后端逻辑。 - HTML:构建网页结构,共108个文件。 - JavaScript:增强网页交互性,共有102个文件。 - CSS:美化页面样式,包含24个文件。 - Echarts:实现复杂数据的视觉呈现。 - Scrapy:数据抓取框架,高效稳定地获取职位数据。 - Django:Web开发框架,用于构建前端与后端的交互逻辑。 - Shell:辅助脚本,用于支持系统级操作。 文件类型分布: - GIF图像:75个,用于网页界面的视觉元素。 - DLL文件:57个,用于支持某些特定的动态链接库。 - Python脚本:37个,包含核心业务逻辑。 - XML配置:23个,用于配置系统及各类工具。 - SVG图形:21个,作为网页中的矢量图形元素。 - 可执行文件(EXE):21个,可能包含辅助工具或程序。 - 文本文件(TXT):7个,可能包含日志或其他文本数据。 总结:此项目是一个功能完善的职位画像系统,能够为用户提供直观、实时的职位市场动态,兼具技术深度与实用价值。

61,112

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧