很抱歉,如果这是一个模糊的标题。我试图在一致的基础上削减XKCD网络漫画的数量。我看到http://xkcd.com/总是在首页上有他们最新的漫画,并在网站的下方有一条线说:
Permanent link to this comic: http://xkcd.com/1520/
其中1520是展出的最新漫画的编号。我想要抓住这个数字,但是,我找不到任何好方法。目前我的所有尝试都看起来很像hackish:
soup = BeautifulSoup(urllib.urlopen('http://xkcd.com/').read())
test = soup.find_all('div')[7].get_text().split()[20][-5:-1]
我的意思是.. 技术上有效,但如果网站上的任何内容被移动到最轻微,它可能会破坏。我知道必须有更好的方法在首页的某个部分内搜索http:xkcd.com/####/
,然后返回####
,但我似乎无法找到它。 Permanent link to this comic: http://xkcd.com/1520/
行似乎有点漂浮,没有任何类型的标签,类或ID。任何人都可以提供任何帮助吗?
答案 0 :(得分:1)
通常我坚持使用HTML解析器。在这里,由于我们正在寻找HTML中的特定文本(不检查任何标签),因此在应用正则表达式搜索时非常好:
Permanent link to this comic: http://xkcd.com/(\d+)/
保存组中的数字。
演示:
>>> import re
>>> import requests
>>>
>>>
>>> data = requests.get("http://xkcd.com/").content
>>> pattern = re.compile(r'Permanent link to this comic: http://xkcd.com/(\d+)/')
>>> print pattern.search(data).group(1)
1520