基于python 爬虫爬到含空格的url的处理方法


Posted in Python onMay 11, 2018

道友问我的一个问题,之前确实没遇见过,在此记录一下。

问题描述

在某网站主页提取url进行迭代,爬虫请求主页时没有问题,返回正常,但是在访问在主页提取到的url时出现了400状态码(400 Bad Request)。

结论

先贴出结论来,如果url里有空格的话,要把空格替换成%20,也就是url编码,否则就会出现400。

解决过程

首先百度了一下400状态码什么意思:

400页面是当用户在打开网页时,返回给用户界面带有400提示符的页面。其含义是你访问的页面域名不存在或者请求错误。

主要有两种形式:

1、bad request意思是“错误的请求”;

2、invalid hostname意思是”不存在的域名”。

所以说问题应该是出在了url上,我怀疑是他的url提取逻辑有问题,于是让他把url打印一下看看,他说看不出什么问题。

然后我就把他代码要了过来,自己调调试试,发现前几个子url是访问正常的,但是其中一个出现了400,那个url如下:

http://www.qichacha.com/company_getinfos?unique=4d5ad1bc15ddc4ad9873e5b0ff4f93d3&companyname=意大利C.D.VIDEO S.P.A.深圳代表处&tab=base

下面是一个访问正常的url:

http://www.qichacha.com/company_getinfos?unique=f6aa78d2e9f4b0bc98103785f96c1353&companyname=深圳市联得自动化装备股份有限公司&tab=base

我首先把这个url复制到浏览器,发现可以正常访问,然后就留神了一下浏览器上url的变化,发现空格变成了%20,在代码里把url中的空格都替换成%20后,

程序访问也正常了。

问题解决。

启示

以后做爬虫,对于不可预测的不规律的请求,在发请求之前先把url进行url编码,以免出现这种错误。

这篇基于python 爬虫爬到含空格的url的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
python 中split 和 strip的实例详解
Jul 12 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
Python更改pip镜像源的方法示例
Dec 01 Python
python实现定时发送邮件
Dec 23 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
关于 Python json中load和loads区别
Nov 07 Python
python运算符之与用户交互
Apr 13 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 #Python
解决Python网页爬虫之中文乱码问题
May 11 #Python
解决python爬虫中有中文的url问题
May 11 #Python
利用Python yagmail三行代码实现发送邮件
May 11 #Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 #Python
解决python3 json数据包含中文的读写问题
May 10 #Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 #Python
You might like
BBS(php & mysql)完整版(一)
2006/10/09 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
php中return的用法实例分析
2015/02/28 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
不同浏览器的怪癖小结
2010/07/11 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Python合并多个Excel数据的方法
2018/07/16 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
基于keras中的回调函数用法说明
2020/06/17 Python
Python 读取位于包中的数据文件
2020/08/07 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
会计毕业生自荐书
2014/06/12 职场文书
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL