在利用python采集网页信息时,经常会碰到url中包含编码字符的情况,此时必须先执行解码操作,才能确保请求地址准确无误。下面将逐步讲解整个编码转换与数据抓取的完整流程。
1、 首先通过import语句引入必要的库模块,本例中将调用urllib包下的两个核心子模块,具体如下所示。
2、 其中request模块负责发起网络请求,parse模块则专门用于处理URL的编码与解码任务。

3、 本文以某知名汽车资讯平台为实际案例展开说明。
立即学习“Python免费学习笔记(深入)”;
4、 构建一个字典q,设定其键名为q,对应值为“宝马”。
5、 即将搜索关键词“宝马”作为键q的取值,完成参数初始化配置。

6、 字典定义完成后,需对其中value部分进行URL编码处理。由于目标网站采用GBK字符集,因此必须选用GBK编码方式执行转义。
7、 对字典中q所对应的“宝马”字符串,使用GBK编码标准进行URL编码,从而生成合法可传输的查询参数。
8、 输出编码后的结果,效果如下图所示:

9、 接着需要拼接完整的请求URL。因本次目标为搜索结果页,故额外定义一个整型变量i表示当前页码,便于后续翻页抓取。
10、 在基础URL模板中,将关键词占位符替换为已编码的res变量,页码位置则由变量i动态填充。
1、数据调用该功能使界面与程序分离实施变得更加容易,美工无需任何编程基础即可完成数据调用操作。2、交互设计该功能可以方便的为栏目提供个性化性息功能及交互功能,为产品栏目添加产品颜色尺寸等属性或简单的留言和订单功能无需另外开发模块。3、静态生成触发式静态生成。4、友好URL设置网页路径变得更加友好5、多语言设计1)UTF8国际编码; 2)理论上可以承担一个任意多语言的网站版本。6、缓存机制减轻服务器

11、 生成最终URL后,先打印输出,并手动复制至浏览器中打开,验证链接是否能正常跳转并展示预期内容,效果参见下图:


12、 确认URL有效后,即可调用request模块发送HTTP请求,并检查返回状态码是否为200,判断连接是否成功。
13、 向构造好的URL地址发起GET请求,接收服务器返回的响应对象。


14、 获取响应内容后,需按网站实际编码格式(此处为GBK)进行解码,再输出原始HTML源码,代码实现如下:

15、 所有代码整合汇总及实际运行效果截图如下:










