免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 76493 | 回复: 11
打印 上一主题 下一主题

运行网上一个爬虫的例子,中文显示问题,求指导,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-07 16:41 |只看该作者 |倒序浏览
本帖最后由 misslushui 于 2013-11-08 11:07 编辑
  1. #!/usr/bin/python
  2. #coding=utf8
  3. import urllib2
  4. import re
  5. import threading
  6. import time

  7. '''
  8. http://www.cnproxy.com/proxy1.html

  9. '''


  10. proxylist1 =[]
  11. portdicts ={'v':"3",'m':"4",'a':"2",'l':"9",'q':"0",'b':"5",'i':"7",'w':"6",'r':"8",'c':"1"}
  12. def get_proxy_from_cnproxy():
  13.     global proxylist1

  14.     p=re.compile(r'''<tr><td>(.+?)<SCRIPT type=text/javascript>document.write\(":"\+(.+?)\)</SCRIPT></td><td>(.+?)</td><td>.+?</td><td>(.+?)</td></tr>''')

  15.     for i in range(1,2):
  16.         target = r"http://www.cnproxy.com/proxy%d.html" % i
  17.         print target
  18.         req = urllib2.urlopen(target)
  19.         result =  req.read()
  20.         matchs = p.findall(result)
  21.        # print matchs
  22.         for row in matchs:
  23.             ip=row[0]
  24.             port =row[1]
  25.             port = map(lambda x:portdicts[x],port.split('+'))
  26.             port = ''.join(port)
  27.             agent = row[2]
  28.             #addr = row[3].decode("GBK").encode("utf8")
  29.             #addr = row[3].decode("cp936").encode("utf8")
  30.             addr = row[3].decode("utf8").encode("utf8")

  31.             l=[ip,port,agent,addr]
  32.             print l
  33.             proxylist1.append(l)


  34. if __name__ =="__main__":
  35.     get_proxy_from_cnproxy()
复制代码
调整了一下,不在用baidu检查代理的正确性,解析的中文还是有问题,如下:
  1. http://www.cnproxy.com/proxy1.html
  2. ['217.169.209.2', '6666', 'HTTP', '\xe5\xa1\x9e\xe5\xb0\x94\xe7\xbb\xb4\xe4\xba\x9a']
  3. ['192.227.139.106', '7808', 'HTTP', 'United States']
  4. ['110.4.12.170', '83', 'HTTP', '\xe9\xa6\x99\xe6\xb8\xaf \xe9\xa6\x99\xe6\xb8\xaf\xe7\xa7\xbb\xe5\x8a\xa8\xe9\x80\x9a\xe8\xae\xaf\xe6\x9c\x89\xe9\x99\x90\xe5\x85\xac\xe5\x8f\xb8']
  5. ['69.197.132.80', '7808', 'HTTP', '\xe7\xbe\x8e\xe5\x9b\xbd WholeSale Internet\xe5\x85\xac\xe5\x8f\xb8']
  6. ['205.164.41.101', '3128', 'HTTP', '\xe7\xbe\x8e\xe5\x9b\xbd \xe5\x8a\xa0\xe5\x88\xa9\xe7\xa6\x8f\xe5\xb0\xbc\xe4\xba\x9a\xe5\xb7\x9e\xe5\x9c\xa3\xe4\xbd\x95\xe5\xa1\x9eEgihosting\xe5\x85\xac\xe5\x8f\xb8']
  7. ['63.141.249.37', '8089', 'HTTP', '\xe7\xbe\x8e\xe5\x9b\xbd \xe5\xaf\x86\xe8\x8b\x8f\xe9\x87\x8c\xe5\xb7\x9e\xe5\xa0\xaa\xe8\x90\xa8\xe6\x96\xaf\xe5\x9f\x8eDataShack\xe5\x85\xac\xe5\x8f\xb8']
  8. ['27.34.142.47', '9090', 'HTTP', '\xe6\x97\xa5\xe6\x9c\xac']
  9. ['211.115.113.35', '8088', 'HTTP', '\xe9\x9f\xa9\xe5\x9b\xbd \xe9\xa6\x96\xe5\xb0\x94']
  10. ['110.232.72.174', '8080', 'HTTP', '\xe5\x8d\xb0\xe5\xba\xa6\xe5\xb0\xbc\xe8\xa5\xbf\xe4\xba\x9a']
  11. ['177.69.195.4', '3128', 'HTTP', '\xe5\xb7\xb4\xe8\xa5\xbf']
  12. ['112.218.71.120', '80', 'HTTP', '\xe9\x9f\xa9\xe5\x9b\xbd']
  13. ['139.0.15.186', '8080', 'HTTP', '\xe5\x8d\xb0\xe5\xba\xa6\xe5\xb0\xbc\xe8\xa5\xbf\xe4\xba\x9a']
  14. ['54.247.119.128', '3128', 'HTTP', '\xe7\xbe\x8e\xe5\x9b\xbd \xe5\x8d\x8e\xe7\x9b\x9b\xe9\xa1\xbf\xe5\xb7\x9e\xe8\xa5\xbf\xe9\x9b\x85\xe5\x9b\xbe\xe5\xb8\x82\xe4\xba\x9a\xe9\xa9\xac\xe9\x80\x8a\xe5\x85\xac\xe5\x8f\xb8\xe6\x95\xb0\xe6\x8d\xae\xe4\xb8\xad\xe5\xbf\x83']
  15. ['84.22.41.1', '3128', 'HTTP', '\xe5\xa1\x9e\xe5\xb0\x94\xe7\xbb\xb4\xe4\xba\x9a']
  16. ['200.54.92.187', '80', 'HTTP', '\xe6\x99\xba\xe5\x88\xa9']
  17. ['108.61.89.152', '7808', 'HTTP', 'United States']
  18. ['190.228.33.114', '8080', 'HTTP', '\xe9\x98\xbf\xe6\xa0\xb9\xe5\xbb\xb7']
  19. ['200.42.56.146', '8080', 'HTTP', '\xe9\x98\xbf\xe6\xa0\xb9\xe5\xbb\xb7']
  20. ['110.50.80.30', '8888', 'HTTP', '\xe5\x8d\xb0\xe5\xba\xa6\xe5\xb0\xbc\xe8\xa5\xbf\xe4\xba\x9a']
  21. ['189.112.117.5', '8080', 'HTTP', '\xe5\xb7\xb4\xe8\xa5\xbf']
  22. ['110.4.12.170', '80', 'HTTP', '\xe9\xa6\x99\xe6\xb8\xaf \xe9\xa6\x99\xe6\xb8\xaf\xe7\xa7\xbb\xe5\x8a\xa8\xe9\x80\x9a\xe8\xae\xaf\xe6\x9c\x89\xe9\x99\x90\xe5\x85\xac\xe5\x8f\xb8']
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2013-11-07 16:51 |只看该作者
decode or encode ?

论坛徽章:
0
3 [报告]
发表于 2013-11-07 16:59 |只看该作者
回复 2# q1208c


    谢谢老大回复,我是新手,在代码里有这么一段,
  1. for row in matchs:
  2.             ip=row[0]
  3.             port =row[1]
  4.             port = map(lambda x:portdicts[x],port.split('+'))
  5.             port = ''.join(port)
  6.             agent = row[2]
  7.             addr = row[3].decode("cp936").encode("utf-8")
复制代码
这个addr就是中文的  我试过了row[3].decode("gb2312").encode("utf-8")也试过了直接row[3],试了很多种编译,依然不显示中文,以为是linux本身编译问题,我换到windows下也是一样的问题,帮忙看看吧,谢谢了

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
4 [报告]
发表于 2013-11-07 17:04 |只看该作者
把前面的 decode("cp936") 换成 utf-8 看看 .

另外, 试试 eval ('u"' + text + '"')

我原来的代码找不到了, 记得不是太清楚

论坛徽章:
0
5 [报告]
发表于 2013-11-07 23:34 |只看该作者
谢谢,还是没有解决

论坛徽章:
0
6 [报告]
发表于 2013-11-08 10:07 |只看该作者
urlopen().read() 到的数据都 decode('utf-8|gbk|gb2312')之类的编码格式,我的linux下用utf-8,这里就转成utf-8的,windows下我转成了gb2312

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
7 [报告]
发表于 2013-11-08 10:12 |只看该作者
因为http://www.cnproxy.com/proxy1.htmlhttp://www.baidu.com的coding是不一样的,
proxy(gb2312), baidu(utf-,所以,你如果先用baidu调试的话,结果应当是不能用在proxy上的。

论坛徽章:
0
8 [报告]
发表于 2013-11-08 10:28 |只看该作者
回复 6# cj4777


你用这个例子能正常显示中文吗?谢谢


   

论坛徽章:
0
9 [报告]
发表于 2013-11-08 10:29 |只看该作者
回复 7# icymirror


在没用baidu调试时就出差错了,解析proxy时就不显示中文

   

论坛徽章:
0
10 [报告]
发表于 2013-11-08 11:09 |只看该作者
回复 7# icymirror


    调整了一下,只解析不用baidu检查,还是有问题的,见我1楼的编辑后的贴子,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP