我正在使用Python和Beautiful Soup开展Web scraper项目。请查看我遇到问题的HTML代码部分。由于<li>
中的所有<ul>
项都与<div>
和<span>
具有相同的类名,因此如何提取电话号码,即第二个<span>
的值在第三个<li>
项目?
我可以使用<ul>
提取ad_soup.find("ul",{"class":"Menu"})
标记及其内容,但我不知道如何继续。任何帮助都将受到高度赞赏。
<ul class="Menu">
<li>
<div class="item">
<span class="name">Name:</span>
<span class="value">....</span>
</div>
</li>
<li>
<div class="item">
<span class="name">Location:</span>
<span class="value">....</span>
</div>
</li>
<li>
<div class="item">
<span class="name">Phone:</span>
<span class="value">....</span>
</div>
</li>
</ul>
答案 0 :(得分:2)
如果您知道手机始终是第三个元素,则以下内容应该有所帮助:
(ad_soup.find("ul",{"class":"Menu"}).
find_all("li")[2].find("span", {"class": "value"}))
如果您不知道手机始终是第三个元素,您可以遍历所有li
并选择所需的手机:
[li.find("span", {"class": "value"})
for li in ad_soup.find("ul",{"class": "Menu"}).find_all("li")
if li.find("span", {"class": "name"}).string == "Phone:"]
答案 1 :(得分:2)
您可以提取所有li并在结果数组中查找范围,如下所示:
let timeIndex = 2
let DateLocation = 1
let locationIndex = 4
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if userPickedDate && indexPath.row == timeIndex {
return 50
}
if userPickedDate && indexPath.row == DateLocation {
return 0
}
print("The indexPath: \(indexPath)")
if remindMeOnLocationSwitch.isOn && indexPath.row == locationIndex {
return 100
}
if remindMeOnDay.isOn && indexPath.row == DateLocation{
return 300
} else if indexPath.row == DateLocation || indexPath.row == timeIndex || indexPath.row == locationIndex {
return 0
}
return 50
}