【发布时间】:2019-07-20 14:04:28
【问题描述】:
尝试遍历文本文件中的电影标题以调用 API 并将响应存储到文本文件中。
文件的每一行都包含一个标题 ex。
Titanic
Avatar
A Star Is Born
我尝试使用的 api 来自 www.odmpapi.com
这是我必须正确加入和创建网络链接的原因
import requests
import sys
prefixURL = 'http://www.omdbapi.com/?t='
suffixURL = '&apikey=xxx4s23'
text_file = open("url.txt", "w")
with open('print.txt', 'r') as f:
for i in f:
uri = prefixURL + i.rstrip(' \n\t') + suffixURL
print uri
text_file.write(url)
text_file.write('\n')
text_file.close()
text_file = open("responses.txt", "w")
with open('url.txt', 'r') as f2:
for i in f2:
url = i.strip(' \n\t')
batch = requests.get(i.rstrip(' \n\t'))
data = batch.text
print data
text_file.write(data)
text_file.write('\n')
text_file.close()
这只会将列表中的最后一个标题写入responses.txt。
【问题讨论】:
-
没有引用 par1 & part2 我认为你需要将这些重构为 prefixURL & suffixURL。
-
@wwii 谢谢。用过
新手错误。 -
你有一个循环,看起来你知道如何写入文件。你有什么问题?您是否想弄清楚如何提出请求?您查看过
urllib.requests文档或Requests: HTTP for Humans文档吗? -
我认为您可能会受益于查看context managers 以避免泄漏文件描述符。也许在这里不相关,但对未来有好处。
-
@wwii 我正在这样做,但它只将列表中的最后一个标题写入responses.txt ``` text_file = open("responses.txt", "w") #send every uri到 api 并将响应写入一个带有 open('url.txt', 'r') as f2: for i in f2: url = i.strip(' \n\t') batch = requests.get( i.rstrip('\n\t')) data = batch.text 打印数据 text_file.write(data) text_file.write('\n') text_file.close() ```
标签: python json api web-scraping