这是全部的调试过程,我已经整理成为笔记,这里分享给大家:
python爬取豆瓣两千万图书简介信息:(一)目标API分析
python爬取豆瓣两千万图书简介信息:(二)简单python请求urllib2
python爬取豆瓣两千万图书简介信息:(三)异常处理
python爬取豆瓣两千万图书简介信息:(四)多进程并发
python爬取豆瓣两千万图书简介信息:(五)数据库设计
python爬取豆瓣两千万图书简介信息:(六)数据库操作类
python爬取豆瓣两千万图书简介信息:(七)代理IP
python爬取豆瓣两千万图书简介信息:(八)总结
简单python请求:urllib2
如何构建一个简单的pyhton请求,网上一搜一大推。
我这里采用的是 urllib2 作为我的请求库,原因是 urlib2 作为python的基础框架,接口成熟,应用范围广等。
下面就是一个简单的 urllib2 请求:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
url = 'https://api.douban.com/v2/book/1000001'
headers = {"User-Agent": "Mozilla/5.0"}
#headers设置请求的headers,标明是哪种客户端访问的服务器,可以不填
req = urllib2.Request(url, headers=headers)
res = urllib2.urlopen(req, timeout=20)
#设置请求,并设置请求超时时间为20s
res = res.read()
#通过read()解析response,并将结果转译为utf-8编码
print res
运行结果如图所示:
屏幕快照 2017-07-10 下午1.59.22.png
这样,一个简单的urllib2 发起的网络请求就完成了。
其中需要说明的是,由于某些网站或者API的返回结果,其系统编码的方式是GB2312 或者 GBK 等,所以为了编码方式的统一,而且因为豆瓣API的接口字段有中文,所以此次编码统一使用UTF8编码。
python文件编码设置:
# -*- coding:utf-8 -*-
再就是pyhton系统编码设置:
import sys
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
因为我的python版本还是2.7,这个地方还是可以用sys.setdefaultencoding() 。然而在Python3.3开始已经移除了这个方法.所以具体在使用这个方法的时候,还是要深入了解一下具体情况,以及用不用sys.setdefaultencoding() 具体发生了什么事情。