我有一个HTML列表,从这个列表中,我只需要具有class=""
的<tr>
元素。我想稍后下载这些文件,所以我只需要第三个<td>
元素href
和<a>
元素的href
之后,如何将它们直接作为字符串读取
我希望所有的<tr>
元素都带有class = ""
例如:
<tr class="">
<td>29 September, 2021</td>
<td>Antwerp</td>
<td><a href="http://data.insideairbnb.com/belgium/vlg/antwerp/2021-09-29/data/listings.csv.gz" onclick="var that=this;ga('send','event', 'download','listings',this.href);setTimeout(function(){location.href=that.href;},200);return false;">listings.csv.gz</a></td>
<td>Detailed Listings data for Antwerp</td>
在这个<tr>
元素的内部有一个<td>
元素。我希望在第三个<td>
元素中包含<a>
元素的href。所以我想要的是urlhttp://data.insideairbnb.com/belgium/vlg/antwerp/2021-09-29/data/listings.csv.gz
(不仅仅是这个:D,我想要所有的url)
代码
import requests
from bs4 import BeautifulSoup
from datetime import datetime
DATASET_URL = "http://insideairbnb.com/get-the-data.html"
DATASET_CITY = "Antwerp"
r = requests.get(DATASET_URL)
content = r.content
soup = BeautifulSoup(content, "html.parser")
antwerp_table = soup.find(class_=DATASET_CITY.lower())
print(antwerp_table)
# antwerp_table is my html table
html示例(有关详细信息,请访问http://insideairbnb.com/get-the-data.html)
<table class="table table-hover table-striped antwerp">
<thead>
<tr>
<th class="col-md-3" data-field="host_id">Date Compiled</th>
<th class="col-md-3" data-field="host_id">Country/City</th>
<th class="col-md-3" data-field="host_id">File Name</th>
<th class="col-md-3" data-align="right" data-field="count">
Description
</th>
</tr>
</thead>
<tbody>
<tr class="">
<td>29 September, 2021</td>
<td>Antwerp</td>
<td><a href="http://data.insideairbnb.com/belgium/vlg/antwerp/2021-09-29/data/listings.csv.gz" onclick="var that=this;ga('send','event', 'download','listings',this.href);setTimeout(function(){location.href=that.href;},200);return false;">listings.csv.gz</a></td>
<td>Detailed Listings data for Antwerp</td>
</tr>
<tr class="">
<td>29 September, 2021</td>
<td>Antwerp</td>
<td><a href="http://data.insideairbnb.com/belgium/vlg/antwerp/2021-09-29/data/calendar.csv.gz" onclick="var that=this;ga('send','event', 'download','calendar',this.href);setTimeout(function(){location.href=that.href;},200);return false;">calendar.csv.gz</a></td>
<td>Detailed Calendar Data for listings in Antwerp</td>
</tr>
...
<tr class="archived">
<td>17 August, 2021</td>
<td>Antwerp</td>
<td><a href="http://data.insideairbnb.com/belgium/vlg/antwerp/2021-09-29/data/calendar.csv.gz" onclick="var that=this;ga('send','event', 'download','calendar',this.href);setTimeout(function(){location.href=that.href;},200);return false;">calendar.csv.gz</a></td>
<td>Detailed Calendar Data for listings in Antwerp</td>
</tr>
首先,你必须单独拿桌子}元素
如果使用find,它将查找所有表
我检查了该类有1个表,因此我们可以使用
.select_one()
在此之后,您必须使用
select()
{这是您想要的工作代码
迭代表结果以查找链接
有不同的方法来获取未归档的{{},我建议使用{}css选择器来获取包含空{}和{}的所有{}:
示例
输出
相关问题 更多 >
编程相关推荐