游戏抓取python正则表达式
我试图用Python从一个国际象棋网站上刮取一些游戏文件,但遇到了一个问题。我的计划是从html中删除所有游戏ID,并将它们插入某个url下载。最困难的部分实际上是获得游戏ID 相关的html如下所示:游戏抓取python正则表达式,python,regex,web-scraping,Python,Regex,Web Scraping,我试图用Python从一个国际象棋网站上刮取一些游戏文件,但遇到了一个问题。我的计划是从html中删除所有游戏ID,并将它们插入某个url下载。最困难的部分实际上是获得游戏ID 相关的html如下所示: 我对id=…部分感兴趣。此外,页面中没有以/livechess/…开头的其他事件 如何使用正则表达式提取这些ID?我试着读了一些东西,但它让我困惑,而不是帮助我。不要使用正则表达式来解析HTML。改用HTML解析器。完成此任务非常简单: for link in soup.select('a[
我对id=…
部分感兴趣。此外,页面中没有以/livechess/…
开头的其他事件
如何使用正则表达式提取这些ID?我试着读了一些东西,但它让我困惑,而不是帮助我。不要使用正则表达式来解析HTML。改用HTML解析器。完成此任务非常简单:
for link in soup.select('a[href^=/livechess/game?id=]'):
print link['href']
仅从中获取id可以通过字符串拆分完成:
link_id = link['href'].partition('id=')[-1]
带有实时页面的演示:
>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('http://www.chess.com/members/view/MagnusCarlsen')
>>> soup = BeautifulSoup(r.content)
>>> for link in soup.select('a[href^=/livechess/game?id=]'):
... print link['href']
...
/livechess/game?id=998801933
/livechess/game?id=998801191
/livechess/game?id=998801076
/livechess/game?id=998801451
/livechess/game?id=998801336
/livechess/game?id=998801799
/livechess/game?id=998801568
/livechess/game?id=998800852
/livechess/game?id=998802049
/livechess/game?id=998800982
正则表达式和BeautifulSoup的组合
In [14]: for i in soup.find_all('a', href=re.compile("^/livechess/game\?id=")):
...: print(re.split(r'id=', i['href'])[1])
...:
998801933
998801191
998801076
998801451
998801336
998801799
998801568
998800852
998802049
998800982
谢谢你,玛蒂恩!如何使用BeautifulSoup获取html标记?最初我使用urllib打开url并读取html。@walela:我使用添加了一个演示。@walela:另请参见(BeautifulSoup 4)。