Python和Beautiful Soup-搜索标记a,返回以下标记b';直到找到标记A为止
我有两个变量,一个是“最后一卷”,另一个是“最后一期” 我正在处理的HTML包含所有卷和问题的列表,最新的是第一个 我需要返回比我的文件更新的所有卷和问题的href链接 因此,使用下面的示例,假设我的最后一卷是13,最后一期是1,我需要返回第13卷、第2卷和第14卷、第1卷的href 我有一个艰难的时间与此,因为该卷是自己的 以下是我到目前为止的情况: HTML: 因此,我可以访问文件上最后一个卷和问题的标记,但在遍历备份并在第一个问题停止时,我有过几次失败的尝试 或者从顶部开始向下遍历,直到满足卷和发行条件Python和Beautiful Soup-搜索标记a,返回以下标记b';直到找到标记A为止,python,beautifulsoup,Python,Beautifulsoup,我有两个变量,一个是“最后一卷”,另一个是“最后一期” 我正在处理的HTML包含所有卷和问题的列表,最新的是第一个 我需要返回比我的文件更新的所有卷和问题的href链接 因此,使用下面的示例,假设我的最后一卷是13,最后一期是1,我需要返回第13卷、第2卷和第14卷、第1卷的href 我有一个艰难的时间与此,因为该卷是自己的 以下是我到目前为止的情况: HTML: 因此,我可以访问文件上最后一个卷和问题的标记,但在遍历备份并在第一个问题停止时,我有过几次失败的尝试 或者从顶部开始向下遍历,直到满
有人能帮我一下吗?谢谢。我想您正在寻找,您可以这样使用:
import BeautifulSoup
import re
content='''
<ul class="bobby">
<li><strong>Volume 14</strong></li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, September 2011">Issue 1, September 2011</a>
</li>
<li><strong>Volume 13</strong></li>
<li class="">
<a href="/content/ben/cchts/2010/00000013/00000002" title="Issue 2, December 2010">Issue 2, December 2010</a>
</li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, November 2011">Issue 1, November 2011</a>
</li>
</ul>
'''
last_volume=13
last_issue=1
soup=BeautifulSoup.BeautifulSoup(content)
results = soup.find('ul', attrs={'class' : 'bobby'})
for a_string in results.findAll('a', text=re.compile('Issue')):
volume=a_string.findPrevious(text=re.compile('Volume'))
volume=int(re.search(r'(\d+)',volume).group(1))
issue=int(re.search(r'(\d+)',a_string).group(1))
href=a_string.parent['href']
if (volume>last_volume) or (volume>=last_volume and issue>last_issue):
print(volume,issue,href)
我认为您正在寻找,您可以这样使用:
import BeautifulSoup
import re
content='''
<ul class="bobby">
<li><strong>Volume 14</strong></li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, September 2011">Issue 1, September 2011</a>
</li>
<li><strong>Volume 13</strong></li>
<li class="">
<a href="/content/ben/cchts/2010/00000013/00000002" title="Issue 2, December 2010">Issue 2, December 2010</a>
</li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, November 2011">Issue 1, November 2011</a>
</li>
</ul>
'''
last_volume=13
last_issue=1
soup=BeautifulSoup.BeautifulSoup(content)
results = soup.find('ul', attrs={'class' : 'bobby'})
for a_string in results.findAll('a', text=re.compile('Issue')):
volume=a_string.findPrevious(text=re.compile('Volume'))
volume=int(re.search(r'(\d+)',volume).group(1))
issue=int(re.search(r'(\d+)',a_string).group(1))
href=a_string.parent['href']
if (volume>last_volume) or (volume>=last_volume and issue>last_issue):
print(volume,issue,href)
从美化组导入美化组
内容='''
- 第14卷
-
- 第13卷
-
-
'''
汤=美汤(内容)
汤
最后一卷=13
最后一期=1
res=soup.find('ul',{“class”:“bobby”})
lis=res.findAll('li')
对于lis中的j:
如果(j.find('strong')!=None):
vol=int(j.contents[0]。字符串[7:])
elif(vol>last_vol)或(vol==last_vol和int(j.contents[1]['href'][33:])>last_发行:
打印“卷\t:%d”%vol
打印j.contents[1]。字符串
打印“href\t:%s”%j.contents[1]['href']
给予
卷数:14
2011年9月第1期
href:/content/ben/cchts/2011/00000014/00000001
卷:13
2010年12月第2期
href:/content/ben/cchts/2010/00000013/00000002
从美化组导入美化组
内容='''
- 第14卷
-
- 第13卷
-
-
'''
汤=美汤(内容)
汤
最后一卷=13
最后一期=1
res=soup.find('ul',{“class”:“bobby”})
lis=res.findAll('li')
对于lis中的j:
如果(j.find('strong')!=None):
vol=int(j.contents[0]。字符串[7:])
elif(vol>last_vol)或(vol==last_vol和int(j.contents[1]['href'][33:])>last_发行:
打印“卷\t:%d”%vol
打印j.contents[1]。字符串
打印“href\t:%s”%j.contents[1]['href']
给予
卷数:14
2011年9月第1期
href:/content/ben/cchts/2011/00000014/00000001
卷:13
2010年12月第2期
href:/content/ben/cchts/2010/00000013/00000002
是的,我可以一起工作!非常感谢你。我欢迎其他解决方案,只是为了进一步了解,但这正是我希望获得的。事实上,我可能需要修改一下,因为有时卷和问题可能包含一个字符,例如问题1补充的1…是的,我可以使用!非常感谢你。我欢迎其他解决方案,只是为了进一步了解,但这正是我希望获得的。实际上,我可能需要对此进行一些修改,因为有时卷和问题可能包含一个字符,例如第1期增补的1s。。。
import BeautifulSoup
import re
content='''
<ul class="bobby">
<li><strong>Volume 14</strong></li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, September 2011">Issue 1, September 2011</a>
</li>
<li><strong>Volume 13</strong></li>
<li class="">
<a href="/content/ben/cchts/2010/00000013/00000002" title="Issue 2, December 2010">Issue 2, December 2010</a>
</li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, November 2011">Issue 1, November 2011</a>
</li>
</ul>
'''
last_volume=13
last_issue=1
soup=BeautifulSoup.BeautifulSoup(content)
results = soup.find('ul', attrs={'class' : 'bobby'})
for a_string in results.findAll('a', text=re.compile('Issue')):
volume=a_string.findPrevious(text=re.compile('Volume'))
volume=int(re.search(r'(\d+)',volume).group(1))
issue=int(re.search(r'(\d+)',a_string).group(1))
href=a_string.parent['href']
if (volume>last_volume) or (volume>=last_volume and issue>last_issue):
print(volume,issue,href)
(14, 1, u'/content/ben/cchts/2011/00000014/00000001')
(13, 2, u'/content/ben/cchts/2010/00000013/00000002')
from BeautifulSoup import BeautifulSoup
content = '''<ul class="bobby">
<li><strong>Volume 14</strong></li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, September 2011">Issue 1, September 2011</a>
</li>
<li><strong>Volume 13</strong></li>
<li class="">
<a href="/content/ben/cchts/2010/00000013/00000002" title="Issue 2, December 2010">Issue 2, December 2010</a>
</li>
<li class="">
<a href="/content/ben/cchts/2011/00000014/00000001" title="Issue 1, November 2011">Issue 1, November 2011</a>
</li>
</ul>
'''
soup = BeautifulSoup(content)
soup.prettify()
last_vol = 13
last_issue = 1
res = soup.find('ul',{"class":"bobby"})
lis = res.findAll('li')
for j in lis:
if(j.find('strong') != None):
vol = int(j.contents[0].string[7:])
elif(vol > last_vol) or (vol == last_vol and int(j.contents[1]['href'][33:]) > last_issue):
print "Volume\t:%d" % vol
print j.contents[1].string
print "href\t:%s" % j.contents[1]['href']
Volume :14
Issue 1, September 2011
href :/content/ben/cchts/2011/00000014/00000001
Volume :13
Issue 2, December 2010
href :/content/ben/cchts/2010/00000013/00000002