加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何使用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']

瞧:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读