#0 scrapy爬虫学习中遇到的坑记录

python 基础学习中对于scrapy的使用遇到了一些问题。

首先进行的是对Amazon.cn的检索结果页进行爬取,很顺利,无碍。

下一个目标是对baidu的搜索结果进行爬取

 

1,反爬虫

1.1 我先对ROBOTSTXT_OBEY进行设置,结果找到了scrapy的默认参数(这里涉及多Python环境下库的调用问题,又是一个坑,另写一篇进行记录)。修改无效。

询问后才知道是对scrapy startproject编译过的项目中的setting进行修改

1.2 反爬虫第二关:网址,之前调用的

 1 import scrapy
 2 import sys
 3 
 4 class Jizhi(scrapy.Spider):
 5 
 6     name = 'jizhi'
 7 
 8     arg = ' '.join(sys.argv[3:])
 9 
10     base_urls = "https://www.baidu.com"
11 
12     start_urls = [
13         'https://www.baidu.com/s?{}'.format(arg)
14     ]
15 
16     counter = 0
17 
18     def parse(self, response):
19 
20         result_lst = response.css("h3.t a::text")
21 
22         for result in result_lst:
23             yield {
24                 'title':result.extract()
25             }
26 
27         Jizhi.counter +=1
28 
29         # next_page:css('a.n')
30 
31         if Jizhi.counter == 5: return        
32 
33         next_page = response.css('a.n::attr(href)')
34 
35         if len(next_page) == 2:
36             next_page_url = next_page[1].extract()
37         else:
38             next_page_url = next_page.extract_first()
39 
40         yield scrapy.Request(self.base_urls + next_page_url, callback=self.parse)
使用https

结果

2018-07-26 09:37:28 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: jizhi)
2018-07-26 09:37:28 [scrapy.utils.log] INFO: Versions: lxml 4.2.1.0, libxml2 2.9.8, cssselect 1.0.3, parsel 1.4.0, w3lib 1.19.0, Twisted 17.5.0, Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)], pyOpenSSL 18.0.0 (OpenSSL 1.0.2k  26 Jan 2017), cryptography 2.2.2, Platform Windows-10-10.0.17134-SP0
2018-07-26 09:37:28 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'jizhi', 'NEWSPIDER_MODULE': 'jizhi.spiders', 'SPIDER_MODULES': ['jizhi.spiders']}
2018-07-26 09:37:29 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats','scrapy.extensions.telnet.TelnetConsole','scrapy.extensions.logstats.LogStats']
2018-07-26 09:37:29 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware','scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware','scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware','scrapy.downloadermiddlewares.useragent.UserAgentMiddleware','scrapy.downloadermiddlewares.retry.RetryMiddleware','scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware','scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware','scrapy.downloadermiddlewares.redirect.RedirectMiddleware','scrapy.downloadermiddlewares.cookies.CookiesMiddleware','scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware','scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-07-26 09:37:29 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware','scrapy.spidermiddlewares.offsite.OffsiteMiddleware','scrapy.spidermiddlewares.referer.RefererMiddleware','scrapy.spidermiddlewares.urllength.UrlLengthMiddleware','scrapy.spidermiddlewares.depth.DepthMiddleware']
2018-07-26 09:37:29 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2018-07-26 09:37:29 [scrapy.core.engine] INFO: Spider opened
2018-07-26 09:37:29 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-07-26 09:37:29 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-07-26 09:37:29 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.baidu.com/s?wd=jizhi> (referer: None)
2018-07-26 09:37:29 [scrapy.core.scraper] ERROR: Spider error processing <GET https://www.baidu.com/s?wd=jizhi> (referer: None)
Traceback (most recent call last):File "C:\Users\asus\Anaconda3\lib\site-packages\scrapy\utils\defer.py", line 102, in iter_errbackyield next(it)File "C:\Users\asus\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\offsite.py", line 30, in process_spider_outputfor x in result:File "C:\Users\asus\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\referer.py", line 339, in <genexpr>return (_set_referer(r) for r in result or ())File "C:\Users\asus\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\urllength.py", line 37, in <genexpr>return (r for r in result or () if _filter(r))File "C:\Users\asus\Anaconda3\lib\site-packages\scrapy\spidermiddlewares\depth.py", line 58, in <genexpr>return (r for r in result or () if _filter(r))File "C:\Users\asus\Documents\GitHub\spider\jizhi\jizhi\spiders\jizhi.py", line 40, in parseyield scrapy.Request(self.base_urls + next_page_url, callback=self.parse)
TypeError: must be str, not NoneType
2018-07-26 09:37:29 [scrapy.core.engine] INFO: Closing spider (finished)
2018-07-26 09:37:29 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 222,'downloader/request_count': 1,'downloader/request_method_count/GET': 1,'downloader/response_bytes': 872,'downloader/response_count': 1,'downloader/response_status_count/200': 1,'finish_reason': 'finished','finish_time': datetime.datetime(2018, 7, 26, 1, 37, 29, 585191),'log_count/DEBUG': 2,'log_count/ERROR': 1,'log_count/INFO': 7,'response_received_count': 1,'scheduler/dequeued': 1,'scheduler/dequeued/memory': 1,'scheduler/enqueued': 1,'scheduler/enqueued/memory': 1,'spider_exceptions/TypeError': 1,'start_time': datetime.datetime(2018, 7, 26, 1, 37, 29, 324887)}
2018-07-26 09:37:29 [scrapy.core.engine] INFO: Spider closed (finished)
View Code

报错,范围值应该是str而不是NoneType,很疑惑为啥是NoneType

这一项是str,那说明后面的参数返回值为空,没爬到数据。

ERROR: Spider error processing <GET https://www.baidu.com/s?wd=jizhi> (referer: None)

最后问来问去,是https的问题,把它换成http,OK了。

 

转载于:https://www.cnblogs.com/inkyang/p/9369880.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 使用css如何设置背景虚化?

[css] 使用css如何设置背景虚化&#xff1f; filter: blur(5px);个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Sublime Text 3 、WebStorm配置护眼主题(浅绿色)

本文所用软件版本Sublime Text 3(Build 3143)、WebStorm 2017.2.4(Build #WS-172.4155.35)&#xff0c;其他版本软件配置过程可能不一样&#xff0c;请知悉&#xff01; 1.Sublime Text 3护眼主题 &#xff08;1&#xff09;下载配置文件 链接&#xff1a;http://pan.baidu.…

angular - 如何运行在起来 - 使用nginx

nginx下载地址&#xff0c;使用的是标准版的&#xff1a; 点击下载nginx nginx下载完后&#xff0c;解压 dist文件夹下面所有angular文件放入html文件夹中. 最后命令行cd到当前nginx.exe目录&#xff0c;启动命令&#xff1a;nginx 再配置一下conf文件夹下面的nginx.conf 再loc…

[css] 举例说明background-repeat的新属性值:round和space的作用是什么?

[css] 第 举例说明background-repeat的新属性值&#xff1a;round和space的作用是什么&#xff1f; space 背景图不会产生缩放&#xff0c;会被裁切 round 缩放背景图至容器大小&#xff08;非等比例缩放&#xff09;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…

Java学习资料汇总(JavaSE+JavaEE+数据库+框架+笔试题+面试题)

在写下这篇文章的时候&#xff0c;我还在找工作。理解每一个真正对编程感兴趣的小伙伴的转行不易&#xff0c;于是就把自己这几个月搜索到的学习资料一一分享给大家。 3.数据库 MySQL5.7 Reference Manual https://dev.mysql.com/doc/refman/5.7/en/ SQL中主键与外键的定义和…

2018 Multi-University Training Contest 1 Balanced Sequence(贪心)

题意&#xff1a; t组测试数据&#xff0c;每组数据有 n 个只由 ( 和 ) 构成的括号串。 要求把这 n 个串排序然后组成一个大的括号串&#xff0c;使得能够匹配的括号数最多。 如()()答案能够匹配的括号数是 4&#xff0c;(()) 也是 4。 例如&#xff1a; n 2 ) )(( 你可以将其…

[css] 举例说明with属性的fill-available有什么应用场景

[css] 举例说明with属性的fill-available有什么应用场景 一些 div 元素默认宽度 100% 父元素&#xff0c;这种充分利用可用空间的行为就称为 fill-available。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一…

第一部分 Java:面向对象理解

Java&#xff1a;面向对象理解、集合、IO、NIO、并发、反射源码分析 一.面向对象 1.创建对象的5种方式 (1)使用new关键字(2)使用Class类的newInstance方法(3)使用构造函数类的newInstance方法(4)使用clone方法 --》未实现Cloneable会报错(5)使用反序列化5动态代理2.this、sup…

[css] width属性的min-content和max-content有什么作用

[css] width属性的min-content和max-content有什么作用 max-content 在一个父元素上设置该元素后&#xff0c;元素的宽度会以子元素内最长的一个为准&#xff0c;子元素表现得会好像设置了white-space:nowrap一样一行展示min-content 在一个父元素上设置该元素后&#xff0c;子…

js拖拽

function drag(cla1,cla2,index){//鼠标可拖拽区域的dom&#xff0c;被拖拽的dom元素,索引var disX 0; //鼠标到dom元素左边距离var disY 0; //鼠标到dom元素上边距离var oDiv1 document.getElementsByClassName(cla1)[index];var oDiv2 document.getElementsByClassName(c…

[css] 你用过outline属性吗?它有什么运用场景

[css] 你用过outline属性吗&#xff1f;它有什么运用场景 outline &#xff08;轮廓&#xff09;是绘制于元素周围的一条线&#xff0c;位于边框边缘的外围&#xff0c;可起到突出元素的作用。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#x…

Centos7搭建Java环境,并设置项目自启动脚本、定时数据库备份/日志清理脚本

开发环境下载&#xff0c;提供nginx-1.12.2、jdk-8u162、Jenkins下载 建个文件夹&#xff0c;作为开发环境存放路径 cd /usr mkdir developmentEnvironment cd /一.java 1.解压包 tar -zxvf jdk-8u162-linux-x64.tar.gz -C /usr/developmentEnvironment2.配置环境变量 vi…

【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)...

文章目录 前情概要 路由、action的扫描、发现、注册搞定之后&#xff0c;后来我发现在我们的action里面获取参数往往都是通过request对象来一个一个获取。同样的一行代码我们不厌其烦的重复写了无数次。遂想着那我们能不能像后端程序一样做得更自动化一些呢&#xff1f; 所以&a…

Java String常用的数据类型转换

工作写代码经常遇到string的数据类型转换&#xff0c;每次都去搜索如何转换很不方便。写篇博客做个总结&#xff0c;以后看这篇就好了。 1.string-bigDecimal 2.string-date Testpublic void StringToDate() throws ParseException {Date date new SimpleDateFormat("yy…

深度学习之Batch Normalization

1、Batch Normalization的引入 在机器学习领域有个很重要的假设&#xff1a;IID独立同分布假设&#xff0c;也就是假设训练数据和测试数据是满足相同分布的&#xff0c;这是通过训练数据获得的模型能够在测试集上获得好的效果的一个基本保障。在深度学习网络中&#xff0c;后一…

[css] 为什么说css的选择器一般不要超过三级?

[css] 为什么说css的选择器一般不要超过三级&#xff1f; CSS的解析过程&#xff0c;在解析选择器的时候&#xff0c;是从右向左&#xff0c;从上到下及逆行解析的。 超过三级会使的css解析树复杂度呈指数级增加&#xff0c;降低css加载性能个人简介 我是歌谣&#xff0c;欢迎…

调用支付宝接口 alipay.data.bill.accountlog.query,提示:ISV权限不足

使用环境&#xff1a;正式环境 接口名称&#xff1a;alipay.data.bill.accountlog.query(支付宝商家账户账务明细查询) 提示&#xff1a;ISV权限不足&#xff0c;建议在开发者中心检查签约是否已经生效 参考&#xff1a; 支付宝商家账户账务明细查询接口文档 自己按照支付宝官…

工作309:uni-获取vuex里面的值

marketId:this.vuex_user.market_id

vue给同一元素绑定单击click和双击事件dblclick,执行不同逻辑

在做项目过程中&#xff0c;需求是点击孔位单击弹出对话框查看产品总数&#xff0c;双击弹出对话框查看详情。一开始直接click和dblclick写在标签里面&#xff0c;但是不管怎么样&#xff0c;总是执行单击事件 解决办法&#xff1a;利用计时器&#xff0c;在大概时间模拟双击事…

CentOS7 1.搭建环境脚本

公司没有专职运维&#xff0c;搭建服务器全部都是程序员操作。以前手动搭建需要1天时间&#xff0c;搭建过程很慢、很无聊&#xff0c;于是自己总结了如下脚本&#xff0c;执行完需要18分钟&#xff0c;以后再也不用苦逼的搭建环境了。 build.sh #!/bin/bashecho "新建de…