我有几个问题,如果他们得到回答,我会很感激 一点背景,所以你会知道我在这里寻找什么.. 我在python中编写了一个代码,用于解析网站中的一些信息并将内容保存到列表中。为简化起见,我将向您展示我现在拥有的代码。
import lxml.html
from lxml.etree import XPath
url = "http://gbgfotboll.se/information/?scr=table&ftid=51168"
date = '2014-09-27'
# use this in real mode: currentDate = (time.strftime("%Y-%m-%d"))
list = []
rows_xpath = XPath("//*[@id='content-primary']/table[3]/tbody/tr[td[1]/span/span//text()='%s']" % (date))
time_xpath = XPath("td[1]/span/span//text()[2]")
team_xpath = XPath("td[2]/a/text()")
html = lxml.html.parse(url)
for row in rows_xpath(html):
time = time_xpath(row)[0].strip()
team = team_xpath(row)[0]
list.append(time + " " + team)
我希望能够将此列表发送到我自己的iphone应用程序。我已经阅读了不同的帖子,你给它命名的论坛,但我似乎找不到满足我的东西。
问题的
1)我有的列表应该在发送之前将其转换为字典,还是只使用普通的json.dump()?
2)在将内容制作成JSON格式之后,我如何将这些内容提供给Web服务,以便我可以从iphone应用程序发出请求来检索信息?这在python中是否可行?
如果我在这里说错了,我很抱歉我是新手,但现在我已经厌倦了3天后在网上搜索我需要直接答案。如果我说错了,请纠正我并告诉我正确的方法去做我想做的事。
非常感谢!!
答案 0 :(得分:0)
而不是将输出“发送”到iPhone,如何从您的应用程序中获取它?如果您在公共可访问的Web服务器上将代码作为Flask应用程序运行,那应该很容易。我想iOS SDK有一个处理HTTP请求的库。一个简化的例子:
from flask import Flask
import lxml.html
import json
from lxml.etree import XPath
app = Flask(__name__)
@app.route("/")
def hello():
url = "http://gbgfotboll.se/information/?scr=table&ftid=51168"
date = '2014-09-27'
# use this in real mode: currentDate = (time.strftime("%Y-%m-%d"))
list = []
rows_xpath = XPath("//*[@id='content-primary']/table[3]/tbody/tr[td[1]/span/span//text()='%s']" % (date))
time_xpath = XPath("td[1]/span/span//text()[2]")
team_xpath = XPath("td[2]/a/text()")
html = lxml.html.parse(url)
for row in rows_xpath(html):
time = time_xpath(row)[0].strip()
team = team_xpath(row)[0]
list.append(time + " " + team)
return json.dump(list)
if __name__ == "__main__":
app.run()
关于你的问题,如果你应该将你的名单转换为词典:这是没有必要的。
顺便说一下;您也可以使用BeautifulSoup浏览DOM,而不是使用lxml / xpath。在我看来,这有点容易阅读。答案 1 :(得分:0)
要添加到@Bjorn的答案,可能不太清楚:您编写的Python代码不需要将JSON输出放在应用程序的其他位置,然后检索;相反,Python代码是 Web服务,每当您的应用程序向其发出HTTP请求时,代码将再次运行,生成新的JSON列表,并在HTTP响应中返回该代码。 / p>
因此,为了使其工作,您需要在某处运行Web服务器,例如Bjorn建议的Heroku(在他链接的教程中,您将用您的代码替换其hello
函数的内容)。一旦它运行,就会有一些URL可以发出HTTP请求。为了让您的iPhone应用程序获取数据,它可以向该URL发出请求,Web服务器将运行您的Python代码并将JSON列表返回给应用程序。
此外,它应该是json.dumps
而不是json.dump
(后者需要写入文件,而前者只返回JSON编码的字符串)。