本人使用了anaconda3中的python3环境,进行爬虫的环境为anaconda中的spyder,使用anaconda具体详细原因及安装教程可见
Anaconda3详细安装使用教程及问题总结
request就是请求的意思,主要用于url信息的请求
urlopen()
urllib.request.urlopen(“网址”)
实现向该网站发起访问请求,并获取响应结果。
urlopen()详细介绍可见python中urlopen()介绍
urlopen()方式所请求的网址访问不能设置用户代理,不支持重构User-Agent,初步认为代理是用于模仿浏览器访问网页所设置的,这个可以看作是爬虫与反爬虫作斗争的第一步。
关于网页的编码方式想了解更多可以参考网页编码方式
Request()
这个函数看着很奇怪,因为他就是之前urllib中request模块中首字母r进行大写后的名称。
通过Request()方式请求访问网址可用进行重构User-Agent,操作为
通过上面的直接使用urlopen()以及先用Request()构造新的User-Agent在使用urlopen()打开,可以看出来,url本身就可以作为urlopen的参数,也可以通过Request给url加了个headers后,再作为urlopen的参数。
更多的浏览器请求头可以参考浏览器User-Agent汇总
parse的意思是解析,这个模块主要就是用于encode转码操作。
urlencode()
按我的理解,urlencode()是的作用说白了就是将{key:value}构造成的key=encode(value)字符串格式,用于url的构造。举例,
可见我们再爬取网页时首先就要对网页的url有充分的了解,关于百度网址的参数解析可以参考百度搜索网址参数解析
很奇怪的是,parse中虽然提供了{key:value}的urlencode方式,却没有对应的urldecode方式。下面介绍另一种编码方式。
quote()
quote简单粗暴,它就是直接将value的值进行编码,转换为%e8…。
在拼接url的时候就可以直接
quote就有对应的反quote的函数,unquote,顾名思义,就是进行解码。
html打开出现乱码
在学习过程中,对代码还不是很理解,导致将他人代码敲入后,爬取了信息把并存入了一个html文件,结果打开出现乱码。
已解决
html文件打开出现乱码,但将其转换为txt格式打开确实有正常代码的,查明原因后知道了是由于编码解码方式等原因而导致的。
一开始我是直接将文件另存时,设置其编码方式,在新建文件打开时正常显示。后发现了原因,是在从网页爬取信息下来的时候解码方式是utf-8,然而在保存至html文件中时选择的是gb18030的方式,将其修改为utf-8后正常显示。但所参考的代码的作者意图就不得而知了。
进行百度搜索时,出现安全验证网页无法打开情况
<title>百度安全验证</title>
<div class=“timeout-title”>网络不给力,请稍后重试
(大部分省略)
查明原因可能时代理方面的问题,被服务器拒绝加入了,具体如何操作较为复杂,毕竟我是初学者,看也看不懂。