【发布时间】:2018-01-25 03:53:27
【问题描述】:
我正在尝试从以下内容中提取所有行 ('li') 内的文本:
<ul id="tco_detail_data">
<li>
<ul class="list-title">
<li class="first"> </li>
<li>Year 1</li>
<li>Year 2</li>
<li>Year 3</li>
<li>Year 4</li>
<li>Year 5</li>
<li class="last">5 Yr Total</li>
</ul>
</li>
<hr class="loose-dotted" />
<li class="first">
<ul class="first">
<li class="first">Depreciation</li>
<li>$5,390</li>
<li>$1,658</li>
<li>$1,459</li>
<li>$1,293</li>
<li>$1,161</li>
<li class="last">$10,961</li>
</ul>
</li>
<hr class="loose-dotted" />
<li>
<ul>
<li class="first">Taxes & Fees</li>
<li>$1,424</li>
<li>$61</li>
<li>$61</li>
<li>$61</li>
<li>$61</li>
<li class="last">$1,668</li>
</ul>
</li>
<hr class="loose-dotted" />
<li>
<ul>
<li class="first">Financing</li>
<li>$1,022</li>
<li>$817</li>
<li>$603</li>
<li>$375</li>
<li>$135</li>
<li class="last">$2,952</li>
</ul>
为了达到这一点,我使用了以下内容:
import requests
from bs4
import BeautifulSoup
import csv
page = requests.get('https://www.edmunds.com/ford/escape/2017/cost-to-own/')
soup = BeautifulSoup(page.content, 'html.parser')
data = soup.find_all("ul", {"id": "tco_detail_data"})
现在,为了提取 class="first" 下的所有行,我使用了:
details = soup.find_all("li", {"class":"first"})
但是,它只获取第一个父 li 标签和它下面的子 li 标签。如何重复该过程以选择每个 li 类“第一”部分并将结果写入 CSV? 我将不胜感激任何指导。
【问题讨论】:
标签: python python-3.x web-scraping beautifulsoup