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 目標:貓眼電影票房、汽車之家字型反爬的處理 --------全部文章: 京東爬蟲 、鏈家爬蟲、美團爬蟲、微信公眾號爬蟲、字型反爬--------- 前言:字型反爬,
SpringMvc中對json資料的處理
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