作为对BeautifulSoup和Urllib2的介绍,我想我会做一个基本的抓取程序,它可以在一个名为lolking.net的视频游戏网站上获取有关给定玩家的信息。每个用户都有一个不包含用户名的加扰网址,因此我必须从网站的HTML中删除播放器的网址扩展名,以便能够访问其用户页面。
以下是我可能遇到的示例字符串:
<div class="search_result_item" onclick="window.location='/summoner/na/26670961'; return false;"><div style="display: table-cell; text-align: center; padding: 10px 10px 16px;"><div style="font-size: 14px; display: block;">
我需要在/summoner/na/
部分之后提取一些数字。我该怎么做?
答案 0 :(得分:3)
让我们向Google演示,因为我不知道相关网站的详细信息(正常的工作流程将从整个页面开始)。
import urllib2
from bs4 import BeautifulSoup
html = urllib2.urlopen( "http://www.google.com" ).read()
soup = BeautifulSoup( html )
自然而然的方法是:
在Google上,让我们找到CSS类“gb1”的所有链接(A标签)并找到它们的href属性。这个类比应该相当简单。
for tag in soup.find_all( "a", { "class" : "gb1" } ):
print tag["href"]
这个例子可能有点过于简单 - 它忽略了这样一个事实:“标签”对象,就像“汤”对象一样,将具有“find_all”方法(和其他类似的方法)。因此,如果您需要以一种涉及更多层嵌套的方式进行探索,这是可能的。除了标签和类之外,还有其他匹配方法比find_all()。请参阅BeautifulSoup的文档,以确切了解可能的内容。
答案 1 :(得分:2)
对于 python 3 它有点不同, (我总是忘记这一点而且它总是让我)
import urllib.request
html = urllib.request.urlopen("http://www.google.com")
soup = BeautifulSoup(html)
html.close()