2017-08-30 54 views
0

我試圖從APU中獲取數據,但作爲響應,我正在獲取純文本。我想逐行讀取所有文本。在Python中解析來自http請求的文本響應

這是url變量:http://www.amfiindia.com/spages/NAVAll.txt?t=23052017073640

第一個片段:

from pymongo import MongoClient 
import requests 
from bs4 import BeautifulSoup as bs 
url = "https://www.amfiindia.com/spages/NAVAll.txt?t=23052017073640" 
request = requests.get(url) 
soup = bs(request.text,"lxml") 
for line in soup: 
    print line 
    break 

結果:它打印出整個文本

二片段:

request = requests.get(url) 
for line in request.text(): 
    print line 
    break 

結果:它打印出1個字符

request = requests.get(url) 
requestText = request.text() 
allMf = requestText.splitlines() 

結果:異常:

我已經試過幾個案件,但不能按行讀取文本行「的Unicode」對象不是可調用的。

+0

你肯定的是,在第二個片段,你遍歷'request.text()',而不是在'request.text'?如果是的話,它應該拋出一個異常,因爲'request.text'是一個屬性,而不是一個方法。因此,你不需要'()' – Leva7

回答

0

request.text是一個屬性而不是一個方法,request.text返回一個unicode字符串,request.text()拋出錯誤'unicode' object is not callable

for line in request.text.splitlines(): 
    print line 
0

試試這個:

from pymongo import MongoClient 
import requests 
from bs4 import BeautifulSoup as bs 
url = "https://www.amfiindia.com/spages/NAVAll.txt?t=23052017073640" 
request = requests.get(url) 
soup = bs(request.text,"lxml") 
for line in soup: 
    print line.text 
    break 
1
import requests 
from bs4 import BeautifulSoup as bs 
url = "https://www.amfiindia.com/spages/NAVAll.txt?t=23052017073640" 
request = requests.get(url) 
soup = bs(request.text,"lxml") 

# soup.text is to get the returned text 
# split function, splits the entire text into different lines (using '\n') and stores in a list. You can define your own splitter. 
# each line is stored as an element in the allLines list. 
allLines = soup.text.split('\n') 

for line in allLines: # you iterate through the list, and print the single lines 
    print(line) 
    break # to just print the first line, to show this works 
+0

你能解釋你的代碼和它爲什麼解決這個問題嗎? *僅限代碼*答案通常沒有幫助。 – Zabuza

+0

添加了解釋。 – RetardedJoker