需求:
如何用python代码实现百度搜索关键词的功能?
比如输入关键词:“python爬虫”,得到一个搜索结果的页面,并保存到本地。
这是经典的python爬虫教学案例之一,也是比较基础的python实现。今天主要通过python自带的urllib库实现。
实现的步骤有三:
第一步:实践。打开百度搜索,输入关键词搜索一下。
第二步:观察。查看链接,找到链接中的规律。
将链接复制出来,如下:
看到这么一长串是不是挺吓人的?!
其实越是复杂的东西越是纸老虎。通过观察,这个链接中关键信息只有划线的一小部分:
为什么这么说?
因为如果你把剩下的信息删除,再去搜索也能得到同样的搜索结果。换句话说,其他的信息可有可无。
其实仔细观察,你会发现这个链接中有很多“&”符号,&的作用就是将不同的字段连接起来,组成一串完整的url,这些字段就像一张表单的表头一样,有些是必须填的,比如"wd=..."这个字段,就是关键词的意思,“ie=utf-8"就是一个编码的字段,采用utf-8编码。
那怎么判断哪些是关键信息?哪些是可有可无的字段呢?
很简单,你把你认为不重要的字段删除后,如果还能够实现搜索,就说明这个字段是不重要的。
另外,你可能会疑惑,明明关键词输入的是“python爬虫”,为什么链接里面变成“wd=python%E7%88%AC%E8%99%AB”了呢,因为中文在搜索的时候被自动转换编码了。我们在写代码的时候也要注意,如果输入的关键词里有中文,则需要对关键词处理一下,可以通过urllib.request.quote( )处理。
第三步:编写代码
首先,导入urllib库中的request,
接着,设定关键词,因为关键词里面有中文,用quote( )方法进行转码;
然后,构造url,我们发现wd就是关键词的接口,所以url部分只要加上keyword关键词即可;
再然后,就可以阿通过Request( )封装成request请求,再通过urlopen( )提交给服务器,并返回响应结果。
最后,通过open( ),write( )方法将页面保存到本地,关闭文件。
需要特别注意的是:构造url的时候,是http,不是https。因为https是网络的安全协议模式,需要有证书才能返回响应,在没有证书的情况下是不会返回结果的。