学习scrapy爬虫框架的一些经验和教训
首先python的scrapy框架很好,功能强大,使用起来也很方便,省去了很多造轮子的时间。在学习的过程中也碰到了一些问题,在这里希望能分享与大家分享,做一个参考
1.安装(pip延时响应问题)
scrapy框架包含了很多包,理论上是通过pip install scrapy命令可直接安装。但实际上还是有很多的问题
问题1:
在cmd直接输入pip install scrapy,可是网速会显示很慢,最后出现红字报错
原因:这是网络连接的问题,pip命令会直接在python官网上下载包(官网的速度那就不敢恭维了)
解决方法:输入 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [module name]
( 这个网站是清华的资源网)
注:如果网速更慢的小伙伴的话,可以在再加上时间元素
形如:pip --default-timeout=10000 install package(与上面的方法可以综合使用)
2.所需要的知识储备
python基础知识(if while for 继承 迭代器 异常处理 文件操作之类(现用现学也不迟))
xpath相关知识,知道如何再xml网页中定位element(https://www.bilibili.com/video/av48794288?from=search&seid=14753612886237754814)
css选择器相关知识(https://www.w3school.com.cn/css/index.asp)
https://blog.csdn.net/lynnpaul/article/details/79884677
正则表达式(B站上全都有)
《数据通信与网络 第四版》第27章 万维网与超文本传输协议(了解web运行的基本原理)
掌握上面这些可以基本开始scrapy框架的学习了,后面的知识用到再说
*系统性的学习很重要,很重要,很重要。百度只能当作辅助,最好是去看书。好东西都在书里
3.教训
vscode一定要搭建好环境
推荐阅读:https://www.cnblogs.com/asce/p/11600904.html
(还有一篇文章找不到了,大意就是配置好 环境变量,怎么配置可以自己搜)
4.当scrapy shell出故障时,推荐使用jupyter notebook进行网页分析(刚接触python编程时也推荐使用)
补充:通过后续的学习,发现jupyter进行网页分析存在很大一部分局限性。
实际上很多网站经典反爬虫机制之一就是会检查User-Agent。当我们直接通过爬虫程序发送请求时,会被网站服务器拒绝(such as经典爬虫练习网站:豆瓣)
所以很多时候还是推荐直接使用scrapy框架(已经进行过User-Agent伪装或者模拟)直接分析,比如直接打印所需要的信息来检查xpath语法或者相关解析路径的正确
如何设置随机User-Agent可参考我的另一篇博文:https://www.cnblogs.com/RosemaryJie/p/12336662.html
安装:通过pip命令安装,jupyter(模块名)(如何安装详细细节可百度)
通过cmd,输入jupyter notebook打开(在cmd中那个文件夹目录下输入命令,文件(file)便储存在哪个文件夹)
在jupyter中可通过创建selector对象分析网页(selector对象包含了xpath和css方法)
from scrapy.selector import Selector
from scrapy.http import HemlResponse
import requests
Response = requests . get("www.jer0.com")
response = HtmlResponse ( url="www.jer0.com" , body = Response . text , encoding = ' utf-8' )
selector = Selector(response = response)
学习scrapy爬虫框架的一些经验和教训的更多相关文章
- scrapy爬虫框架学习笔记(一)
scrapy爬虫框架学习笔记(一) 1.安装scrapy pip install scrapy 2.新建工程: (1)打开命令行模式 (2)进入要新建工程的目录 (3)运行命令: scrapy sta ...
- Scrapy 爬虫框架学习笔记(未完,持续更新)
Scrapy 爬虫框架 Scrapy 是一个用 Python 写的 Crawler Framework .它使用 Twisted 这个异步网络库来处理网络通信. Scrapy 框架的主要架构 根据它官 ...
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
(1).前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送 ...
- Scrapy爬虫框架中的两个流程
下面对比了Scrapy爬虫框架中的两个流程—— ① Scrapy框架的基本运作流程:② Spider或其子类的几个方法的执行流程. 这两个流程是互相联系的,可对比学习. 1 ● Scrapy框架的基本 ...
- 安装scrapy 爬虫框架
安装scrapy 爬虫框架 个人根据学习需要,在Windows搭建scrapy爬虫框架,搭建过程种遇到个别问题,共享出来作为记录. 1.安装python 2.7 1.1下载 下载地址 1.2配置环境变 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影
前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大家讲解一个完整爬虫的流程. 工具和环境 语言:python 2 ...
- Python爬虫教程-31-创建 Scrapy 爬虫框架项目
本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环 ...
随机推荐
- .Java中的异常、断言、日志【草稿下,Log4j专题】
(本章主要讲解Java里面比较核心的一块内容--异常处理,Java异常处理机制,一致都是比较复杂的一块,而很多时候如果写程序的时候能够适当地注意对应的一些异常处理情况,那么就会在开发过程节省一大部分时 ...
- python编程基础——集合
集合是是基本数据类型的一种集合类型. 作用:去重 属性:intersection.union.difference.issubset 实例: list_1=[1,2,3,4,3,5,2,6,1]lis ...
- 当学术邂逅浪漫 – 记MobiCom 2015大会
作者:微软亚洲研究院主管研究员 刘云新 今年的MobiCom大会在著名的浪漫之都巴黎举行.通常于欧洲举办的会议的参会人数会相对少一些,但今年的MobiCom大会吸引了近400人参加,绝不少于往年.浪漫 ...
- 餐厅随评系列之四:Umu日本料理(米其林二星)
文章目录 在过去的几个月,工作和生活都极其忙碌,因此博客短暂停更了一阵子.慢慢积累下了很多素材,从近期开始恢复博客更新,不过很多内容估计得靠回忆了. 索性采取"倒叙"的方法,先从最 ...
- 记一次MySQL表分区操作
最近一次日常迭代中,业务线需要对一张大表进行联合查询,查询性能可想而知,测试过程中服务接口直接响应超时,导致服务不可用,最后临时对该表进行分区操作,暂时缓解性能问题.由于是第一次操作表分区,姑且记录一 ...
- 在Linux上显示正在运行的进程的线程ID
在Linux上显示正在运行的进程的线程ID 在上Linux," ps -T"可以显示正在运行的进程的线程信息: # ps -T 2739 PID SPID TTY STAT TIM ...
- 4款java快速开发平台推荐
JBoss Seam JBoss Seam,算得上是Java开源框架里面最优秀的快速开发框架之一. Seam框架非常出色,尤其是他的组件机制设计的很有匠心,真不愧是Gavin King精心打造的框架了 ...
- iOS 开发富文本之TTTAttributedLabel 在某个特定位置的文字添加跳转,下划线,修改字体大小,颜色
@property(nonatomic , strong) TTTAttributedLabel * ttLabel; @property(nonatomic , strong) NSRange li ...
- [续更]一起来撸一下Flex布局里面的那些属性
Flex的全称是Flexible Box,意为弹性布局,用来为盒模型提供最大的灵活性. Flex包含的属性有很多,每个属性又包含了许多不同意义的属性值···然而在实际开发中,能被我们临幸的可能也只是那 ...
- 使用HBuilder开发移动APP:ajax调用接口数据
既然要做APP,与接口交互式少不了的,除非只是想做一个纯静态的APP.所以html5+的环境准备好后,我最先开始研究的就是如何与接口交互. 使用HBuilder新建示例教程后,里面会有一个ajax(网 ...