Python输入中文的问题
迷茫
迷茫 2017-04-18 09:02:59
0
3
280

我写了一个爬乌云漏洞库的爬虫,其URL形式为http://www.wooyun.org/corps/公司名称/page/1,程序最后raw_input处输入公司名称即可跑出该公司的漏洞。现在的问题是中文编码的问题没解决好,如果公司的名称是英文如RiSing就可以,如果是中文就报错。求各位大大指点

# coding=utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') import urllib import urllib2 import re def getPage(pageNum): try: url = 'http://www.wooyun.org/corps/' + corpName + '/page/' + str(pageNum) request = urllib2.Request(url) response = urllib2.urlopen(request) return response.read().decode('utf-8') except urllib2.URLError, e: if hasattr(e,u"reason"): print u"error",e.reason return None def getContent(page): pattern = re.compile('.*?(.*?).*?(.*?)',re.S) items = re.findall(pattern,page) for item in items: print item[0],'http://www.wooyun.org'+item[1],item[2] def getPageNum(page): pattern = re.compile('

(.*?)(.*?)

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답 (3)
伊谢尔伦

网址含中文要转义..
把14行换成

url = 'http://www.wooyun.org/corps/' + urllib.quote(corpName)+ '/page/' + str(pageNum)

Ubuntu Gnome Terminal 已经测试(百度)成功

    阿神

    我觉得估计不是字符编码的问题,URL里怎么能直接出现汉字?你不要以为浏览器里显示:http://www.wooyun.org/corps/公司名称/page/1你就觉得浏览器请求的URL里面的公司名称就真是汉字。

    事实上浏览器去请求的时候,URL里的汉字全都会用URLEncode转一下的,真正的请求里没有汉字的。

    就像你请求:http://www.wooyun.org/corps/阿里巴巴/page/1,这是不会成功的。
    但你把URL写成:http://www.wooyun.org/corps/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/page/1,你可以成功请求到阿里巴巴的页面。

      巴扎黑
      from urllib import quote print quote('百度')
        최신 다운로드
        더>
        웹 효과
        웹사이트 소스 코드
        웹사이트 자료
        프론트엔드 템플릿
        회사 소개 부인 성명 Sitemap
        PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!