Ⅰ python里怎麼獲得一個url最後一個/後的字元串
printurl[url.rfind('/'):]
Ⅱ python中quote函數是什麼意思,怎麼用
屏蔽特殊的字元、比如如果url裡面的空格!url裡面是不允許出現空格的。
在 Python2.x 中的用法是:
urllib.quote(text)
Python3.x 中是
urllib.parse.quote(text)
按照標准, URL 只允許一部分 ASCII 字元(數字字母和部分符號),其他的字元(如漢字)是不符合 URL 標準的。
所以 URL 中使用其他字元就需要進行 URL 編碼。
URL 中傳參數的部分(query String),格式是:
name1=value1&name2=value2&name3=value3
假如你的 name 或者 value 值中有『&』或者『=』等符號,就當然會有問題。所以URL中的參數字元串也需要把『&=』等符號進行編碼。
URL編碼的方式是把需要編碼的字元轉化為 %xx 的形式。通常 URL 編碼是基於 UTF-8 的(當然這和瀏覽器平台有關)。
例子:
比如『我』,unicode 為 0x6211, UTF-8 編碼為 0xE6 0x88 0x91,URL 編碼就是
%E6%88%91
在 javaScript 中,提供了 encodeURI 和 encodeURIComponent 兩種方法對 URL 進行編碼;
Python 的 urllib 庫中提供了 quote 和 quote_plus 兩種方法。
因為是針對不同場景設計,以上四種方法編碼的范圍均不相同,比如 quote 除了 -._/09AZaz ,都會進行編碼。quote_plus 比 quote 『更進』一些,它還會編碼 /
Ⅲ python使用json爬取京東評論,在瀏覽器頁面的request url 打開是空白的,所以導致No JSON object
json不是一種格式嗎,能當爬蟲用?你訪問的url既然是空白的,那就說明不是這個url,注意找找究竟是哪個url,能訪問並且顯示想要的內容才是對的。最後就是如果能訪問,爬蟲卻抓取不下來,就得考慮是不是被檢測到爬蟲了,需要修改請求頭部等信息隱藏自身。
Ⅳ python2.7如何讓print「不換行」
Python2.x讓print「不換行」的方法是在句尾加上逗號,比如:
print'Hello' :會換行;
print'Hello', :不會換行。
或者直接採用:
from __future__ import print_function
print('go ', end='')
print('home', end='')
Python3.x 則對這個語法進行了修改。
print('Hello')默認也會換行,但是可以指定一個end參數來表示結束時輸出的字元:print('Hello',end='')就表示輸出Hello之後會再輸出一個空格;print('Hello',end='')則表示輸出只輸出Hello,默認的 end 就是換行。
(4)pythonurl空格擴展閱讀
根據PEP的規定,必須使用4個空格來表示每級縮進(不清楚4個空格的規定如何,在實際編寫中可以自定義空格數,但是要滿足每級縮進間空格數相等)。
使用Tab字元和其它數目的空格雖然都可以編譯通過,但不符合編碼規范。支持Tab字元和其它數目的空格僅僅是為兼容很舊的的Python程序和某些有問題的編輯程序。
Ⅳ python 遍歷文本中的url看看是不是正確的
創建文件目錄 2. 編寫程序 對當前路徑執行該程序 3. 查看結果是否正確 4. 結果正確。
Ⅵ python pyquery不能有空格嗎
看地方吧
pyquery庫是jQuery的Python實現,可以用於解析HTML網頁內容,我個人寫過的一些抓取網頁數據的腳本就是用它來解析html獲取數據的。今天重新看了一遍整個文檔,把它的一些使用方法整理了一下,做個記錄。
使用方法
from pyquery import PyQuery as pq
1.可載入一段HTML字元串,或一個HTML文件,或是一個url地址,
例:
d=pq("<html><title>hello</title></html>")
d=pq(filename=path_to_html_file)
d=pq(url='')注意:此處url似乎必須寫全
2.html()和text() ——獲取相應的HTML塊或文本塊,
例:
p=pq("<head><title>hello</title></head>")
p('head').html()#返回<title>hello</title>
p('head').text()#返回hello
3.根據HTML標簽來獲取元素,
例:
d=pq('<div><p>test 1</p><p>test 2</p></div>')
d('p')#返回[<p>,<p>]
print d('p')#返回<p>test 1</p><p>test 2</p>
print d('p').html()#返回test 1
注意:當獲取到的元素不只一個時,html()、text()方法只返回首個元素的相應內容塊
4.eq(index) ——根據給定的索引號得到指定元素
接上例,若想得到第二個p標簽內的內容,則可以:
print d('p').eq(1).html() #返回test 2
5.filter() ——根據類名、id名得到指定元素,例:
d=pq("<div><p id='1'>test 1</p><p class='2'>test 2</p></div>")
d('p').filter('#1') #返回[<p#1>]
d('p').filter('.2') #返回[<p.2>]
6.find() ——查找嵌套元素,例:
d=pq("<div><p id='1'>test 1</p><p class='2'>test 2</p></div>")
d('div').find('p')#返回[<p#1>, <p.2>]
d('div').find('p').eq(0)#返回[<p#1>]
7.直接根據類名、id名獲取元素,例:
d=pq("<div><p id='1'>test 1</p><p class='2'>test 2</p></div>")
d('#1').html()#返回test 1
d('.2').html()#返回test 2
8.獲取屬性值,例:
d=pq("<p id='my_id'><a href=''>hello</a></p>")
d('a').attr('href')#返回
d('p').attr('id')#返回my_id
9.修改屬性值,例:
d('a').attr('href', '')把href屬性修改為了
10.addClass(value) ——為元素添加類,例:
d=pq('<div></div>')
d.addClass('my_class')#返回[<div.my_class>]
11.hasClass(name) #返回判斷元素是否包含給定的類,例:
d=pq("<div class='my_class'></div>")
d.hasClass('my_class')#返回True
12.children(selector=None) ——獲取子元素,例:
d=pq("<span><p id='1'>hello</p><p id='2'>world</p></span>")
d.children()#返回[<p#1>, <p#2>]
d.children('#2')#返回[<p#2>]
13.parents(selector=None)——獲取父元素,例:
d=pq("<span><p id='1'>hello</p><p id='2'>world</p></span>")
d('p').parents()#返回[<span>]
d('#1').parents('span')#返回[<span>]
d('#1').parents('p')#返回[]
14.clone() ——返回一個節點的拷貝
15.empty() ——移除節點內容
16.nextAll(selector=None) ——返回後面全部的元素塊,例:
d=pq("<p id='1'>hello</p><p id='2'>world</p><img scr='' />")
d('p:first').nextAll()#返回[<p#2>, <img>]
d('p:last').nextAll()#返回[<img>]
17.not_(selector) ——返回不匹配選擇器的元素,例:
d=pq("<p id='1'>test 1</p><p id='2'>test 2</p>")
d('p').not_('#2')#返回[<p#1>]
pyquery還有其他一些用法,這里沒有一一整理出來,更多更全的方法可以直接去看它的文檔。
Ⅶ urlencode進行轉換後 為什麼空格是+號 不是%20
可以看看PHP的函數urlencode() 和 rawurlencode()函數的實現方式,第二個是raw轉換,會把對應的空格更換成 %20 的編碼方式。
%20 是空格的 URL 字元編碼。
[ol][*] [*]$new_true_url = iconv('gbk','utf-8',$true_url);
[*]$down_true_url =??urlencode($new_true_url);
[*]$down_true_url =str_replace("%3A%2F%2F", "://", $down_tr。
使用編碼函數就可以將特定字元轉換成規定的字元編碼,包括空格等。解碼函數功能剛好相反。參數是需要處理的字元串,返回值是處理好的字元串。不過這些函數作用都有差異,詳細內容可以自己查看資料。
(7)pythonurl空格擴展閱讀:
編碼原理:
將需要轉碼的字元轉為16進制,然後從右到左,取4位(不足4位直接處理),每2位做一位,前面加上%,編碼成%XY格式。
比如:
空格ASCII碼是32,對應16進制是20,那麼urlencode編碼結果是:%20,但在新標准中空格對應的是+,見RFC-1738
比如:
中ASCII碼是-10544,對應的16進制是D6D0,那麼urlencode編碼結果是:%D6%D0。
Ⅷ python 空格轉url 怎麼變為+號
可能是TAB跟空格的問題. 只限於解決這個問題, 1,把縮進都刪除, 2,每級縮進只用一個空格 這樣修改之後雖然沒有問題, 但是不好看. 所以僅限於解決你的問題.
Ⅸ python中url太長怎麼解決
今天寫了個腳本 主要就是實現利用SQLInj點直接把數據獲取到本地並存到Mysql資料庫中
學過Python的都知道可以使用urllib2中的request()方法直接打開Url,但僅限於url後沒有跟復雜的參數串
今天我利用的Url是
' and (select top 1 cast(CONTENT as varchar(8000)) from xxx.dbo.xxx where cast(CONTENT as varchar) not in (select top 22 cast(CONTENT as varchar) from xxx.dbo.xxx))=0--
開始我也直接用以下語句測試的:
url="上面的URL"
req=urllib2.Request(url)
urllib2.urlopen(req)
可是執行後一直提示500錯誤,由此可以發現應該是Python在對Url進行編碼的時候更改了某些特殊字元造成Url失效
我們可以用urllib2或urllib的quote()方法控制對特殊字元的URL編碼,這里推薦用 urllib下的quote_plus()方法,它將空格轉化成'+'而非%20通用性更好。
我們更改後的代碼如下:
url = "' and (select top 1 cast(CONTENT as varchar(8000)) from xxx.dbo.xxx where cast(CONTENT as varchar) not in (select top "+str(count)+" cast(CONTENT as varchar) from xxx.dbo.xxx))=0--"
quoteUrl=urllib.quote_plus(url,safe=':\'/?&=()')
fd = urllib.urlopen(quoteUrl)
這樣我們就可以正常的提取數據了
Ⅹ 如何使用python根據介面文檔進行介面測試
1,關於requests
requests是python的一個http客戶端庫,設計的非常簡單,專門為簡化http測試寫的。
2,開發環境
mac下面搭建開發環境非常方便。
sudo easy_install pip
sudo pip install requests
測試下:python命令行
import requests
>>> r = requests.get('', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{type:User...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
開發工具,之前使用sublime,發現運行報錯,不識別table字元。
IndentationError: unindent does not match any outer indentation level
非常抓狂的錯誤,根本找不到代碼哪裡有問題了。甚至開始懷疑人生了。
python的這個空格區分代碼真的非常讓人抓狂。開始懷念有大括弧,分號的語言了。
徹底解決辦法,直接換個IDE工具。使用牛刀,IDA開發。
直接下載社區版本即可,因為就是寫個腳本啥的,沒有用到太復雜的框架。
果然效果非常好,直接格式下代碼,和java的一樣好使,可以運行可以debug。右鍵直接運行成功。
3,測試介面
沒有啥太復雜的,直接使用requests框架即可。
#!/usr/bin/python
# -*- coding: utf-8 -*-
################
import requests
#測試網路
def _func(url):
headers = {}
params = {}
req = requests.post(url, headers=headers, params=params)
print(req.text)
if __name__ == '__main__':
url =
_func(url)
4,總結
測試非常重要,尤其是對外的介面出現的漏洞,需要花時間去仔細測試,同時要仔細分析代碼。
安全是挺重要的事情,要花時間去琢磨。
python學習還是非常容易學習的,一個小時就能把語法學會。
同時滲透測試,安全掃描的好多工具也是python寫的。PyCharm CE版本的開發工具足夠強大,能夠幫你快速學習python。
如果想快速做點界面的開發,wxPython是非常不錯的選擇。