【发布时间】:2020-03-03 21:38:43
【问题描述】:
我正在使用房地产网站练习抓取,我想抓取所有地址以获取最近的销售。例如,网站 HTML 的部分如下所示: 网址=https://www.compass.com/agents/irene-vuong/
<div class="profile-active-listings" role="tabpanel" id="active-listings-sales">
<div class="card-content">
<a class="card-title" href="/listing" data-tn="label-address"> 111 East 35th </a>
........
<div class="textIntent-headline1"> Recent Sales</div>
<div class="card-content">
<a class="card-title" href="/morelisting" data-tn="label-address"> East 4th </a>
我正在尝试使用以下代码访问所有地址:
for i in range(0, 30):
h = soup.findAll('a', {'class':'card-title'})[i]
print(h)
但是,我收到以下错误:
IndexError: list index out of range
我得到了前几个地址,但只是在“最近的销售”之前。 它只获取第一部分的地址,而不是整个网站。 如何获取所有地址?
【问题讨论】:
-
您能分享您要抓取的实际页面吗?
-
@ZacharyBlackwood 我刚刚添加了!
-
您似乎使用了错误的
class。该页面上当前有 12 个项目,其类别为uc-listingCart-title,而不是card-title。如果您按照@user2263572 的建议遍历这些内容(而不是对30进行硬编码),那应该会为您提供您正在寻找的所有项目。 -
@ZacharyBlackwood 嗨,我尝试了这个建议,但它仍然只得到了一部分,而不是全部...... :-(
-
啊。看起来额外的项目正在前端动态添加。这个答案可能有助于在 javascript 添加项目后获取页面内容。 stackoverflow.com/a/26440563/5031672
标签: python web-scraping beautifulsoup