正在学习python,打算使用Python把网站的访问记录保存在本地,熟悉之后可以部署到GAE,利用GAE提供的cron就可以每天更近访问流量了。
首先,一个简单的网页抓取程序:
复制代码 代码示例:
import sys, urllib2
req = urllib2.Request("http://www.jb200.com")
fd = urllib2.urlopen(req)
while True:
data = fd.read(1024)
if not len(data):
break
sys.stdout.write(data)
import sys, urllib2
req = urllib2.Request("http://www.jb200.com")
fd = urllib2.urlopen(req)
while True:
data = fd.read(1024)
if not len(data):
break
sys.stdout.write(data)
在终端运行提示urllib2.HTTPError: HTTP Error 403: Forbidden,怎么回事呢?
原因在于:网站禁止爬虫,可以在请求加上头信息,伪装成浏览器访问。
添加和修改:
复制代码 代码示例:
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req = urllib2.Request("http://www.jb200.com", headers=headers)
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req = urllib2.Request("http://www.jb200.com", headers=headers)
再试一下,HTTP Error 403没有了,但是中文全都是乱码。
原因在于:网站是utf-8编码的,需要转换成本地系统的编码格式:
复制代码 代码示例:
import sys, urllib2
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req = urllib2.Request("http://www.jb200.com", headers=headers)
content = urllib2.urlopen(req).read() # UTF-8
type = sys.getfilesystemencoding() # local encode format
print content.decode("UTF-8").encode(type) # convert encode format
再次执行,没有问题了。
可以抓取中文页面了。
接下来就是在GAE上做个简单的应用了,呵呵,有时间再搞哦。
编辑注:最喜欢这样的小实例类的文章了,简单明了,又讲清楚了实现方法,是学习python教程的好文章。
您可能感兴趣的文章:
python beautifulsoup多线程分析并抓取网页