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

我写了一个爬乌云漏洞库的爬虫,其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('<tr>.*?<th><a href="#">(.*?)</a></th>.*?<td><a href="(.*?)">(.*?)</a></td>',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('<p class="page">(.*?)<a',re.S)
    items = re.findall(pattern,page)
    text=items[0]
    text=str(text)
    m = re.findall('\d+',text)
    PageNum=m[1]
    return PageNum

def getResultNum(page):
    pattern = re.compile('<p class="page">(.*?)<a',re.S)
    items = re.findall(pattern,page)
    text=items[0]
    text=str(text)
    m = re.findall('\d+',text)
    ResultNum=m[0]
    return ResultNum
        
        
def getAll():
    page = getPage(1)
    pageNum=getPageNum(page)
    resultNum=getResultNum(page)
    print u"查找到结果共" + str(pageNum) + u"页。"
    for i in range(1, int(pageNum)+1):
        print '==========================',u"正在写入第" + str(i) + u"页数据",'=========================='
        page = getPage(i)
        getContent(page)    
    print u"读取结束,共写入" + str(resultNum) + "条数据。"

    
corpName = raw_input("请输入公司的名字:".decode('utf-8').encode('gbk'))
 

getAll()

迷茫
迷茫

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

全員に返信(3)
伊谢尔伦

URL には中国語の文字が含まれているため、エスケープする必要があります。
14 行目を

に置き換えます リーリー

Ubuntu Gnome ターミナルのテストは成功しました (Baidu)

いいねを押す +0
阿神

これは文字エンコーディングの問題ではないと思います。どうすれば 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 のように記述すると、Alibaba ページを正常にリクエストできます。

いいねを押す +0
巴扎黑

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!