如何使用urllib2从Python中打开的URL中提取特定数据?
发布时间:2020-12-20 12:35:53 所属栏目:Python 来源:网络整理
导读:我是 Python的新手,正在玩一个非常基本的网络爬虫.例如,我做了一个简单的功能来加载显示在线游戏的高分的页面.所以我能够获得html页面的源代码,但我需要从该页面中绘制特定的数字.例如,网页如下所示: http://hiscore.runescape.com/hiscorepersonal.ws?user
我是
Python的新手,正在玩一个非常基本的网络爬虫.例如,我做了一个简单的功能来加载显示在线游戏的高分的页面.所以我能够获得html页面的源代码,但我需要从该页面中绘制特定的数字.例如,网页如下所示:
http://hiscore.runescape.com/hiscorepersonal.ws?user1=bigdrizzle13 其中’bigdrizzle13’是链接的独特部分.需要绘制并返回该页面上的数字.从本质上讲,我想构建一个程序,我所要做的就是输入’bigdrizzle13’并输出这些数字. 解决方法
正如另一张海报所提到的,BeautifulSoup是这项工作的绝佳工具.
这是整个夸张评论的程序.它可能会使用很多容错,但只要您输入有效的用户名,它就会从相应的网页中提取所有分数. 我尽力发表评论.如果你对BeautifulSoup很感兴趣,我强烈建议你使用BeautifulSoup documentation方便我的例子. 整个计划…… from urllib2 import urlopen from BeautifulSoup import BeautifulSoup import sys URL = "http://hiscore.runescape.com/hiscorepersonal.ws?user1=" + sys.argv[1] # Grab page html,create BeatifulSoup object html = urlopen(URL).read() soup = BeautifulSoup(html) # Grab the <table id="mini_player"> element scores = soup.find('table',{'id':'mini_player'}) # Get a list of all the <tr>s in the table,skip the header row rows = scores.findAll('tr')[1:] # Helper function to return concatenation of all character data in an element def parse_string(el): text = ''.join(el.findAll(text=True)) return text.strip() for row in rows: # Get all the text from the <td>s data = map(parse_string,row.findAll('td')) # Skip the first td,which is an image data = data[1:] # Do something with the data... print data 这是一个测试运行. > test.py bigdrizzle13 [u'Overall',u'87,417',u'1,784',u'78,772,017'] [u'Attack',u'140,903',u'88',u'4,509,031'] [u'Defence',u'123,057',u'85',u'3,449,751'] [u'Strength',u'325,883',u'84',057,628'] [u'Hitpoints',u'245,982',571,420'] [u'Ranged',u'583,645',u'71',u'856,428'] [u'Prayer',u'227,853',u'62',u'357,847'] [u'Magic',u'368,201',u'75',264,042'] [u'Cooking',u'34,754',u'99',u'13,192,745'] [u'Woodcutting',u'50,080',u'93',u'7,751,265'] [u'Fletching',u'53,269',051,939'] [u'Fishing',u'5,195',u'14,512,569'] [u'Firemaking',u'46,398',677,933'] [u'Crafting',u'328,268',u'343,143'] [u'Smithing',u'39,898',u'77',561,493'] [u'Mining',u'31,584',331,051'] [u'Herblore',u'247,149',u'52',u'135,215'] [u'Agility',u'225,869',u'60',u'276,753'] [u'Thieving',u'292,638',u'56',u'193,037'] [u'Slayer',u'113,245',u'73',u'998,607'] [u'Farming',u'204,608',u'51',u'115,507'] [u'Runecraft',u'38,369',u'880,789'] [u'Hunter',u'384,920',u'53',u'139,030'] [u'Construction',u'232,379',u'125,708'] [u'Summoning',236',u'64',u'419,086'] 瞧:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |