使用“ index-x”在页面的子部分快速定位很方便。
例如
https://docs.python.org/3/library/re.html#index-2
在此page中给出了第三小节。
当我想与他人共享子节的位置时,如何以一种便捷的方式获取索引?
例如,如何获取{m,n}
子节的索引而不从index-0开始计数?
答案 0 :(得分:1)
在bs4 4.7.1中,您可以使用:has
和:contains
来指定特定的文本字符串并返回索引(请注意,使用select_one
将返回第一个匹配项。请使用列表理解和select
(如果要返回所有匹配项)
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://docs.python.org/3/library/re.html')
soup = bs(r.content, 'lxml')
index = soup.select_one('dl:has(.pre:contains("{m,n}"))')['id']
print(index)
任何版本:如果您想要一个将特殊字符映射到索引的字典。感谢@zoe在我的字典理解中发现错误。
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://docs.python.org/3/library/re.html')
soup = bs(r.content, 'lxml')
mappings = dict([(item['id'], [i.text for i in item.select('dt .pre')]) for item in soup.select('[id^="index-"]')])
indices = {i: k for (k, v) in mappings.items() for i in v}
答案 1 :(得分:0)
您正在寻找 <input className="form-control"
onKeyDown={(e) => this.editDueDatekeypress(e, keyName, dueDateObject)}
onChange={this.onChangeEditDueDate}
value={this.state.editDueDateText}
defaultValue={dueDateObject.dueDate}
type="text"
placeholder="By 28th May, I will have" />
<div className="input-group-append">
<button className="btn btn-outline-primary"
type="button"
onClick={(e) => this.editDueDate(e, keyName, dueDateObject)}>Submit</button>
</div>
。
您可以下载页面的HTML,并使用以下代码获取index-7
的所有可能值:
index-something
输出:
import re
import requests
from bs4 import BeautifulSoup
r = requests.get('https://docs.python.org/3/library/re.html')
soup = BeautifulSoup(r.content.decode())
result = [t['id'] for t in soup.find_all(id=re.compile('index-\d+'))]
print(result)
列表理解中的['index-0', 'index-1', 'index-2', 'index-3', 'index-4', 'index-5', 'index-6', 'index-7', 'index-8', 'index-9', 'index-10', 'index-11', 'index-12', 'index-13', 'index-14', 'index-15', 'index-16', 'index-17', 'index-18', 'index-19', 'index-20', 'index-21', 'index-22', 'index-23', 'index-24', 'index-25', 'index-26', 'index-27', 'index-28', 'index-29', 'index-30', 'index-31', 'index-32', 'index-33', 'index-34', 'index-35', 'index-36', 'index-37', 'index-38']
对象包含t
与正则表达式匹配的标记的HTML。