Python抓取中文网页的实现代码

发布时间:2019-07-16编辑:脚本学堂
本文介绍下,使用python抓取中文网页的代码,有需要的朋友参考下吧。

正在学习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多线程分析并抓取网页