0

私は次のようなhtmlファイルを持っています:

<form action="/2811457/follow?gsid=3_5bce9b871484d3af90c89f37" method="post">
<div>
<a href="/2811457/follow?page=2&amp;gsid=3_5bce9b871484d3af90c89f37">next_page</a>
&nbsp;<input name="mp" type="hidden" value="3" />
<input type="text" name="page" size="2" style='-wap-input-format: "*N"' />
<input type="submit" value="jump" />&nbsp;1/3
</div>
</form>

ファイルから「1/3」を抽出する方法は?

それはhtmlの一部です、私はそれを明らかにするつもりです。私が美しいスープを使うとき、

私はbeautifulsoupを初めて使用し、ドキュメントを確認しましたが、それでも混乱しています。

HTMLファイルから「1/3」を抽出する方法は?

total_urls_num = re.findall('\d+/\d+',response)   

作業コード:

from BeautifulSoup import BeautifulSoup
import re

with open("html.txt","r") as f:
    response = f.read()
    print response
    soup = BeautifulSoup(response)
    delete_urls = soup.findAll('a', href=re.compile('follow\?page'))   #works,should escape ?
    print delete_urls
    #total_urls_num = re.findall('\d+/\d+',response)   
    total_urls_num = soup.find('input',type='submit')   
    print total_urls_num
4

2 に答える 2

1

問題は、検索しているテキストがタグの属性ではなく、後に続くことだと思います。次を使用してアクセスできます.next

In [144]: soup.find("input", type="submit")
Out[144]: <input type="submit" value="jump" />

In [145]: soup.find("input", type="submit").next
Out[145]: u'&nbsp;1/3\n'

そして、それから 1/3 を好きなように取得できます。

In [146]: re.findall('\d+/\d+', _)
Out[146]: [u'1/3']

または単に次のようなもの:

In [153]: soup.findAll("input", type="submit", text=re.compile("\d+/\d+"))
Out[153]: [u'&nbsp;1/3\n']
于 2012-06-17T03:08:07.940 に答える
0

このドキュメントを読む

いいえ

total_urls_num = soup.find('input',style='submit')   #can't work 

type代わりに使用する必要がありますstyle

>>>temp = soup.find('input',type='submit').next
'&nbsp;1/3\n'
>>>re.findall('\d+/\d+', temp)
[u'1/3']
>>>re.findall('\d+/\d+', temp).[0]
u'1/3'
于 2012-06-17T03:12:51.540 に答える