2017-08-30 149 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