我是Python的新手,在我第二次尝试一个项目时,我想从url上的超引用中提取一个子字符串,特别是一个标识号。你知道吗
例如,this url是我的搜索查询的结果,给出了超引用http://www.chessgames.com/perl/chessgame?gid=1012809。从这里我想提取识别号“1012809”,并将其附加到urlhttp://www.chessgames.com/perl/chessgame?gid=1012809,然后我计划在urlhttp://www.chessgames.com/pgn/alekhine_naegeli_1932.pgn?gid=1012809处下载文件。但我目前还落后于此几步,因为我想不出提取标识符的方法。你知道吗
这是我的MWE:
from bs4 import BeautifulSoup
url = 'http://www.chessgames.com/perl/chess.pl?yearcomp=exactly&year=1932&playercomp=white&pid=&player=Alekhine&pid2=&player2=Naegeli&movescomp=exactly&moves=&opening=&eco=&result=1%2F2-1%2F2'
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
import re
y = str(soup)
x = re.findall("gid=[0-9]+",y)
print x
z = re.sub("gid=", "", x(1)) #At this point, things have completely broken down...
你根本不需要正则表达式。Css选择器和字符串操作将引导您走向正确的方向。请尝试以下脚本:
输出:
正如Albin Paul评论的那样,
re.findall
返回一个列表,您需要从中提取元素。顺便说一下,这里不需要BeautifulSoup
,使用urllib2.urlopen(url).read()
来获取内容的字符串,这里也不需要re.sub
,一个regex模式(?:gid=)([0-9]+)
就足够了。你知道吗相关问题 更多 >
编程相关推荐