Python网络服务

编辑:光环大数据 来源: 互联网 时间: 2017-10-31 14:16 阅读:

  由于浏览器中查看drchuck的twitter朋友列表,它看上有点乱七八糟。为了能够看到真正Twitter返回的XML数据,你可以查看网络页面的源代码。

我们可以通过Python的urllib库获得这个XML数据。

importurllib

TWITTER_URL='http://api.twitter.com/l/statuses/friends/ACCT.xml'

whileTrue:

print''

acct=raw_input('EnterTwitterAccount:')

if(len(acct)<1):break

url=TWITTER_URL.replace('ACCT',acct)

print'Retrieving',url

document=urllib.urlopen(url).read()

printdocument[:250]

程序命令提示框中,输入Twitter账号,程序就会获取这个Twiiter账号中所有朋友和其状态信息,并且会显示返回数据结果中前250字符。

pythontwitter1.py

EnterTwitterAccount:drchuck

Retrievinghttp://api.twitter.com/l/statuses/friends/drchuck.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<userstype="array">

<user>

<id>115636613</id>

<name>SteveCoppin</name>

<screen_name>steve_coppin</screen_name>

<location>Kent,UK</location>

<description>Softwaredeveloping,bestpracticing,agilee

EnterTwitterAccount:

在这个案例中,我们已读取XML数据,就像读取一个HTML网络页面一样。如果我们想从XML中获取数据,我们可以使用Python的string方法,但它会变得非常复杂,就像我们已经开始深挖XML细节一样。

我们获得XML数据,大致看看如下所示:

<?xmlversion="1.0"encoding="UTF-8"?>

<userstype="array">

<user>

<id>115636613</id>

<name>SteveCoppin</name>

<screen_name>steve_coppin</screen_name>

<location>Kent,UK</location>

<status>

<id>10174607039</id>

<source>web</source>

</status>

</user>

<user>

<id>17428929</id>

<name>davidkocher</name>

<screen_name>davidkocher</screen_name>

<location>Bern</location>

<status>

<id>10306231257</id>

<text>@MikeGraceIfpossiblepleasepostadetailedbugreport</text>

</status>

</user>

...

最顶端标签是users,它有很多个user标签。每个user标签都有个status标签。

13.6处理API数据

当我们从API中获取一个标准XML数据,我们通常会使用XML解析器(例如:EelementTree)来解析XML数据,从而获得一些有用的信息。在Python中,我们使用ElementTree来解析XML数据。

下面示例中,我们将通过TwiiterAPI来获取朋友和其状态数据,然后进行XML解析,最后输出前四个朋友和其状态。

importurllib

importxml.etree.ElementTreeasET

TWITTER_URL='http://api.twitter.com/l/statuses/friends/ACCT.xml'

whileTrue:

print''

acct=raw_input('EnterTwitterAccount:')

if(len(acct)<1):break

url=TWITTER_URL.replace('ACCT',acct)

print'Retrieving',url

document=urllib.urlopen(url).read()

print'Retrieved',len(document),'characters.'

tree=ET.fromstring(document)

count=0

foruserintree.findall('user'):

count=count+1

ifcount>4:break

printuser.find('screen_name').text

status=user.find('status')

ifstatus:

txt=status.find('text').text

print'',txt[:50]

我们使用findall方法获取一个列表的用户节点,然后对列表中的用户信息进行遍历。对每一个每用户节点,我们会输出他们的screen_name和status。如果有status节点,就打印出前50个字符的status文本,如果没有,则不输出。

这个方法比较简单明了,我们使用findall方法可以获得一个列表节点或者单个节点。如果一个节点带有很多字节点的元素,那么我们会进一步获取这个节点的信息,直到我们找到我们想要的数据。

示例代码如下:

pythontwitter2.py

EnterTwitterAccount:drchuck

Retrievinghttp://api.twitter.com/l/statuses/friends/drchuck.xml

Retrieved193310characters.

steve_coppin

Lookingforwardtosome"ohnothemarketsclosed,

davidkocher

@MikeGraceIfpossiblepleasepostadetailedbug

hrheingold

Fromtoday'sColumbiaJournalismReview,oncrapd

huge_idea

@drchuck#cnx2010missesyou,too.Thanksforco

EnterTwitterAccount:hrheingold

Retrievinghttp://api.twitter.com/l/statuses/friends/hrheingold.xml

Retrieved208081characters.

carr2n

RT@tysone:Saturday'sproclaimationby@carr2npr

tiffanyshlain

RT@ScottKirsner:Turningsmartphonesintoatool

soniasimone

@ACCompanyCFunny,smart,cute,andalsonice!He

JenStone7617

Watching"ChangingTheEquation:HighTechAnswers

EnterTwitterAccount:

使用ElementTree比使用Python的string方法,对XML解析和获取字段更加简单。

13.7词汇表

API:

应用程序接口-两个应用程序组件间的一种交互模式。

ElementTree:

一个Python自带库,通常用于解析XML数据

XML:

可扩展标记语言-一种结构式数据标签格式

REST:

表述性状态传递-提供一个基于HTTP协议应用程序的数据访问的网络服务。

SOA:

面向服务架构-一个应用程序是通过网络连接的组件。

13.8练习

练习1修改上文中Twitter示例,命名为twitter2.py。这个程序能够读取给定Twitter用户账号的朋友数据,并且能够打印出每个朋友的个人信息。每个朋友信息格式为:第一行为朋友的twitter用户名,第二行为朋友的地址信息,第三行为朋友最新一条状态小心。以下是一个完整程序输出。

EnterTwitterAccount:drchuck

Retrievinghttp://api.twitter.com/l/statuses/friends/drchuck.xml

Retrieved194533characters.

steve_coppin

Kent,UK

Lookingforwardtosome"ohnothemarketsclosed,

davidkocher

Bern

@MikeGraceIfpossiblepleasepostadetailedbug

hrheingold

SanFranciscoBayArea

RT@barrywellman:LovelyAmBerhSciInternet&Comm

huge_idea

Boston,MA

@drchuck#cnx2010missesyou,too.Thanksforco

 

  Python培训Python培训班Python培训机构,就选光环大数据!

  还不够过瘾?想学习更多?点击 http://hadoop.aura.cn/python/ 进行Python学习!


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();