1. 程式人生 > >python爬蟲中對含中文的url處理

python爬蟲中對含中文的url處理

在練習urllib操作中,遇到了url中含有中文字元的問題。比如http://dotamax.com/,看下原始碼的話,上方的搜尋框的name=p,輸入內容點選搜尋以後,通過GET方法進行傳遞,比如我們搜尋”意“,url變為http://dotamax.com/search/?q=意。但是url中是不允許出現中文字元的,這時候就改用urllib.parse.quote方法對中文字元進行轉換。

url = "http://dotamax.com/"
search = "search/?q=" + urllib.parse.quote("意")
html = urllib.request.urlopen(url + search)

這樣就可以正常獲取頁面了。

需要注意的是不能對整個url呼叫quote方法。

print(urllib.parse.quote("http://dotamax.com/search/?q=意"))

上面程式碼輸出結果:
http%3A//dotamax.com/search/%3Fq%3D%E6%84%8F

可以看到,' : ', ' ? ', ' = '都被解碼,因此需要將最後的中文字元部分呼叫quote方法後接在後面。

但是還有更方便的方法:

import urllib.parse

b = b'/:?='
print(urllib.parse.quote("http://dotamax.com/search/?q=意", b))
輸出結果為:
http://dotamax.com/search/?q=%E6%84%8F
這就是我們想要的結果了。對quote方法是用help命令可以看到如下資訊:
Help on function quote in module urllib.parse:

quote(string, safe='/', encoding=None, errors=None)
    quote('abc def') -> 'abc%20def'
    
    Each part of a URL, e.g. the path info, the query, etc., has a
    different set of reserved characters that must be quoted.
    
    RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax lists
    the following reserved characters.
    
    reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                  "$" | ","
    
    Each of these characters is reserved in some component of a URL,
    but not necessarily in all of them.
    
    By default, the quote function is intended for quoting the path
    section of a URL.  Thus, it will not encode '/'.  This character
    is reserved, but in typical usage the quote function is being
    called on a path where the existing slash characters are used as
    reserved characters.
    
    string and safe may be either str or bytes objects. encoding must
    not be specified if string is a str.
    
    The optional encoding and errors parameters specify how to deal with
    non-ASCII characters, as accepted by the str.encode method.
    By default, encoding='utf-8' (characters are encoded with UTF-8), and
    errors='strict' (unsupported characters raise a UnicodeEncodeError).

None

safe為可以忽略的字元,可以str型別或者bytes型別。

更詳細的一些用法可以看這裡:

http://www.nowamagic.net/academy/detail/1302863

相關推薦

python爬蟲中文url處理

在練習urllib操作中,遇到了url中含有中文字元的問題。比如http://dotamax.com/,看下原始碼的話,上方的搜尋框的name=p,輸入內容點選搜尋以後,通過GET方法進行傳遞,比如我們搜尋”意“,url變為http://dotamax.com/search

Python爬蟲中文小說網點查找小說並且保存到txt(中文亂碼處理方法)

nbsp nor png erro 請求方式 輸出結果 下載 ros mozilla 從某些網站看小說的時候經常出現垃圾廣告,一氣之下寫個爬蟲,把小說鏈接抓取下來保存到txt,用requests_html全部搞定,代碼簡單,容易上手. 中間遇到最大的問題就是編碼問題,第一抓

python文件的處理

and 刪除 eva 改密 名稱 賬號 字典 oat 行為 1.當文件中存放的用戶名的密碼,是以字符串的形式存儲時,怎麽進行讀取和操作 eg:MLing,123456   niuniu,234567   luoluo,345678 方法一:將字符串轉為字典 1)字典查找的效

Python3 URLopen 中文URL處理方法

借用知乎的解答:url當中不可能有中文,因為url可以使用的字元有限制,所有其他字元都應該使用url編碼,你應該先把中文編碼成%XX這樣的形式再拼起來 解決方法如下: from urllib.parse import quote import string url = r'

python MySQL database 訪問處理(中文字元處理)例項

直接上程式碼: #!/usr/bin/env python # encoding: utf-8

Python網路爬蟲的網頁中文正則表示式匹配小心得

這是第一篇部落格,關於在正則表示式的情況下通過python的re模組對爬蟲爬下的網頁資料進行正則表示式,匹配得出所有中文字元 #!/usr/bin/python # -*- coding: utf-8 -*- import re def matchURL_info(

webpack css 壓縮前綴的處理

IV In kit top bsp asset load 規則 plugin 在 vue-cli 創建的項目中,用默認的 webpack 配置對項目打包後,發現 css 文件中樣式的前綴有所缺失,例如:flex 這個應該有前綴的屬性卻沒有(display:-webkit-f

python爬蟲遇到的假死問題

timeout 處理 The error style err AS continue exce 如在請求一個URL,網站沒有響應的時候,會無限卡死進程。這個時候我們可以在urllib2.urlopen設置一個超時時間,超過這個時間的話就拋出異常。如下所示。 我們可以捕抓到這

Python爬蟲(二)——開封市58同城出租房數據進行分析

boxplot bsp des das png fig 分析 set 技術 出租房面積(area)           出租房價格(price)       

angularJs時間戳的處理

一. ng表示式  <!-- 表示式中使用 --> {{ dt1 | date:'yyyy-MM-dd HH:mm:ss' }} 二. 控制器中使用 //controller必須注入 $filter 模組 app.controller("appCtrl", ["$scope

分享《精通Python爬蟲框架Scrapy》中文PDF+英文PDF+原始碼

下載:https://pan.baidu.com/s/13tFIFOhDM8PG9pFUuA8M2g 更多資料:http://blog.51cto.com/3215120 《精通Python爬蟲框架Scrapy》中文PDF+英文PDF+原始碼 中文版PDF,364頁,帶目錄和書籤,文字可以複製貼上,彩色

分享《精通Python爬蟲框架Scrapy》中文PDF+英文PDF+源代碼

其中 rap size href 代碼 mar ref png nag 下載:https://pan.baidu.com/s/13tFIFOhDM8PG9pFUuA8M2g 更多資料:http://blog.51cto.com/3215120 《精通Python爬蟲框架Sc

使用nginx image filter實現類OSS物件儲存圖片的實時處理

使用Nginx image_filter實現類似OSS圖片處理 在家使用自己的電腦做了一個小應用,可檢視照片,按以前的方式,需要在使用者上傳圖片後對進行裁剪壓縮,然後給前段一個縮圖地址與原圖地址。這種方式有兩個弊端磁碟空間的浪費、縮圖尺寸調整不便捷。是否有其他不使用雲OSS儲存的情況下自己實現一

python爬蟲scrapy框架是否安裝成功及簡單建立

判斷框架是否安裝成功,在新建的爬蟲資料夾下開啟碟符中框輸入cmd,在命令中輸入scrapy,若顯示如下圖所示,則說明成功安裝爬蟲框架:     檢視當前版本:在剛剛開啟的命令框內輸入scrapy version,如下圖顯示:   在cmd中啟動一個工程名:例:在

Python爬蟲HTTP和HTTPS的雜七雜八

    HTTP協議(HyperText Transfer Protocol,埠號80)即超文字傳輸協議,是一種釋出和接收HTML頁面的方法。HTTPS(HyperText Transfer Protocol over Secure Socket Layer,埠號443)是H

Python爬蟲六:字型反爬處理(貓眼+汽車之家)-2018.10

環境:Windows7 +Python3.6+Pycharm2017 目標:貓眼電影票房、汽車之家字型反爬的處理                   --------全部文章: 京東爬蟲 、鏈家爬蟲、美團爬蟲、微信公眾號爬蟲、字型反爬--------- 前言:字型反爬,

SpringMvcjson資料的處理

1、使用@ResponseBody實現資料輸出       @ResponseBody的作用:       將標註此註解的處理方法的返回值結果直接寫入HTTP  ResponseBody (Re

JSON特殊字元的處理

        在前臺通過textarea儲存資料到後臺資料庫時,如果資料中存在回車符等特殊字元時,就無法把資料封裝成json資料傳到前臺顯示,這時需要在傳回前臺之前轉義或替換資料中的特殊字元,然後在拼接封裝成json資料。替換方法如下: /** * 處理json中的特

iOS Http傳輸過程特殊字元的處理

在進行http傳輸的過程,如果有特殊的符合,例如“+,&。*”,不會進行處理,都直接替換掉了。 原因:預設的系統不會對這些特殊符號進行轉義,只會進行替換 解決辦法:在post之前對這些特殊符

java數字進行四捨五入處理

前段時間有個需求需要對浮點數進行第一位小數四捨五入,以得到處理後的百分比整數。最終採用的方式為: double dou1=99.01; double dou2=34.89; int result=0; if (dou1!=0.00){ result=(int) Math.round(do