[英]“Do like readlines()” to a Session object (Python)
我想从一些网页中挑选一些信息。 我要(或我要)打开网页,遍历各行,检查每个关键词,并在找到时复制所需信息。
这些页面需要一个会话。
def getpage()
home = 'website'
exstension1 = '/input/page'
extension2 = '/output/page'
indexnumber = '11100'
sess = requests.Session()
getter = sess.get(home+extension1)
payload = {'foo':'bar','indexnumber':indexnumber}
getter = sess.post(home+extension2,data=payload)
return sess
正如我试图在标题中说的那样,我需要一个用于.get()的readlines()方法。
a.get(somePage)###Now could I put...###.readlines()
####or
a.get(somePage).text.readlines()###?
###I don't think I want the following, for performance reasons, correct me if I am wrong
F = open(someNewFile,mode='w')
F.write(a.get(somePage).text)
F.close()
F = open(thatFileIJustMade).readlines()###All that just to turn it into a File on which I can use readlines?
谢谢
当我尝试
a.get(somePage).readlines()
我懂了
AttributeError: Response Object Doesn't have attribute readlines
有几种方法可以执行此操作,但是大多数Requests-y方法是将流请求与Response.iter_lines()
一起使用:
r = requests.get(somePage, stream=True)
for line in r.iter_lines(1024):
# Do stuff on this line.
除了@Lukasa出色且完全正确的方法之外,您还可以执行以下操作:
import io
r = requests.get(some_page)
file_like_obj = io.StringIO(r.text)
lines = file_like_obj.readlines()
请注意, r.text
绝对是在Response对象上使用的正确属性,因为在Python2上它将需要unicode,而在Python 3上则需要本机字符串(默认为unicode)。
从文档中,请记住:
警告
iter_lines()不是可重入安全的。 多次调用此方法会导致某些接收到的数据丢失。 如果需要从多个位置调用它,请改用结果迭代器对象:
lines = r.iter_lines()
# Save the first line for later or just skip it
first_line = next(lines)
for line in lines:
print(line)
为了简单起见,我使用以下方法:
r = requests.get(somePage).text
r_lines = r.split("\n")
for line in r_lines:
#line logic goes here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.