Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
游戏抓取python正则表达式_Python_Regex_Web Scraping - Fatal编程技术网

游戏抓取python正则表达式

游戏抓取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[

我试图用Python从一个国际象棋网站上刮取一些游戏文件,但遇到了一个问题。我的计划是从html中删除所有游戏ID,并将它们插入某个url下载。最困难的部分实际上是获得游戏ID

相关的html如下所示:


我对
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)。