『壹』 python獲取url中域名及從域名中提取ip的方法
這種方法為從urlparse模塊中通過urlparse方法提取url通過hostname屬性獲取當前url的域名。
此方法是通過urllib模塊中splittype方法先從url中獲取到proto協議及rest結果,然後通過splithost從rest中獲取到host及rest結果,此時host為域名。(rest被分割了兩次)如下圖:
此方法為從sokcet模塊中獲取到gethostbyname方法將域名傳遞進去就能解析出域名的ip。
此方法為通過nslookup獲取域名的ip。
以上從域名中提取ip會不準確,需要設置DNS伺服器,這樣解析域名就准確了。
『貳』 python如何讀取網頁中的數據
用Beautiful Soup這類解析模塊:
Beautiful Soup 是用Python寫的一個HTML/XML的解析器,它可以很好的處理不規范標記並生成剖析樹(parse tree);
它提供簡單又常用的導航(navigating),搜索以及修改剖析樹的操作;
用urllib或者urllib2(推薦)將頁面的html代碼下載後,用beautifulsoup解析該html;
然後用beautifulsoup的查找模塊或者正則匹配將你想獲得的內容找出來,就可以進行相關處理了,例如:
html='<html><head><title>test</title></head><body><p>testbody</p></body></html>'
soup=BeautifulSoup(html)
soup.contents[0].name
#u'html'
soup.comtents[0].contents[0].name
#u'head'
head=soup.comtents[0].contents[0]
head.parent.name
#u'html'
head.next
#u'<title>test</title>
『叄』 python怎麼獲取需要登陸的介面的數據
使用Python做爬蟲是很廣泛的應用場景,那就涉及到了Python是如何獲取介面數據的呢?Python擁有很多很強大的類庫,使用urllib即可輕松獲取介面返回的數據。
...展開
工具原料Python開發工具url介面,用於請求獲取數據
方法/步驟分步閱讀
1
/4
首先新建一個py文件,導入所需的類庫,urllib,json等。
2
/4
聲明api的url地址,和構造請求頭。
3
/4
使用urlopen方法發起請求並獲取返回的數據。
4
/4
最後就是對返回字元串的處理了。比如字元串的截取,字元串的轉換成json對象,轉換成欄位,再獲取對應key的值。
使用Python3實現HTTP get方法。使用聚合數據的應用編程介面,你可以調用小發貓AI寫作API。這是一個免費的應用程序介面,先上代碼,詳細說明寫在後面:
1
2
3
4
5
6
7
8
9
10
11
12
import requests
import time
import re
se = requests.session()
if __name__ == '__main__':
Post_url = "http://api-ok.xiaofamao.com/api.php?json=0&v=1&key=xxxxxx" #自己想辦法弄到key
Post_data = {
'wenzhang': '床前明月光,疑是地上霜。'
}
Text = se.post(Post_url, data=Post_data).text.replace("'", '"').replace('/ ', '/')
print(Text)
首先,什麼是原料葯?應用編程介面的全稱也稱為應用編程介面。它簡稱為應用編程介面。當我第一次接觸介面調用時,我不知道寫什麼,因為我看了整個項目。這個項目是由龍卷風寫的。看了半天龍卷風後,我發現我走錯了方向。我只是直接看著界面,因為沒有人告訴我項目的整個過程。我不得不強迫自己去看它。我所要做的就是找到程序的主入口,然後根據函數一步一步地調用它。
當我編寫介面時,因為我必須配合後台編寫和瀏覽器訪問,每次訪問只需要傳入相應的參數來調用相應的介面。界面可以由他人編寫,也可以由合作公司提供。當然,合作公司提供的不是免費的。現在基本上,如果我不訪問它一次,它只收費幾美分。當你聽到這些,不要低估這幾分。有時候如果你打了幾百萬次電話,會花很多錢。有些人認為,我們不能按月付款嗎?對不起,我不知道。總之,我們一個接一個地計算,因為第一次,我認為我買的那些直接買了我們想要的所有數據,把它們保存在本地資料庫中,當我使用它們時,直接從我自己的資料庫中轉移它們。後來,我發現我想得太多了,偽原創API。
該介面調用由python的請求庫訪問,它基本上是一個get或post請求。有些介面是加密的,然後我們必須用另一方提供給我們的公鑰加密或解密,然後用相應的參數訪問。我們想要的數據基本上是在請求後返回的結果中以json格式解析的。因此,在請求之後,我們可以用請求提供的json函數來解析它,然後提取數據以一次訪問一個數據。
沒錯,介面調用就是這么簡單,但是有了後台編寫,我才發現請求庫現在有多強大,只要它是http或https,我很高興我在一周內讀完了請求和bs4,我真的不打電話給爬蟲工程師,如果我是爬蟲的時候不學習請求,你能用scrapy寫4=dead來寫它嗎?Urllib的單詞基本上被刪除了。如果你有要求,為什麼要用這個?
『肆』 Python瞎老弟的爬蟲心得之requests篇②requests基本使用
上一期已經成功安裝了requests模塊,並簡單的使用了requests,本期,我們將詳細介紹requests模塊
直接使用requests.get()方法即可
其中內容將通過requests.text查看
將get()方法,改為post()即可
其中需要提交的內容,通過data參數傳入
url參數,也即跟在地址後的?後的一串內容
我們可以直察埋接通過url地址將其構造出來
也可以通過params參數,傳入一個字典使用
可以看出,地址同樣被自動構造為
這是一種更加容易的傳入參數的方法,可以不需要使用
我們得到了一個對象r,這是一個requests.models.Response對象
使用檔爛r.text可以得到響應內容
其中解碼方式是requests自行猜測的,它會把猜測的結果保存在r.encoding中
使用r.encoding可以得到或者改變編碼方式
如果使用r.text得到的內容不正確,可以手動修改r.encoding,然後再使用r.text輸出內容
如果不知道正確的編碼,可能有人會建議你使用chardet模塊來進行編碼的測試(該模塊需要使用pip安裝,目前版本也會隨安裝requests附帶)
使用方法:
事實上,現在的requests已經使用了chardet模塊,但你仍然可以將行沒漏chardet用於其他時候使用
使用r.content可以得到二進制的響應內容
使用r.json()可以得到json的響應內容
給headers參數傳入一個字典即可
如同之前你預想的那樣,user-agent會被修改為lsp
通過r.status_code可以查看狀態碼
通過r.headers可以查看響應頭
通過r.raise_for_status()可以在狀態碼為不正常的時候拋出異常
在請求中添加timeout參數,即可讓你的程序在指定的時間內沒有得到響應就拋出異常
通過r.url可以查看到請求地址
通過r.history可以查看到重定向
通過修改allow_redirects參數為False可以禁止重定向
例如禁止github進行重定向