【发布时间】:2020-09-28 22:07:42
【问题描述】:
我正在抓取 li 标签,并想停在 html 中的特定位置。我不想要 html 中此点之后的 li 标签。
我是usnig python 3.7,beautifulsoup4,这里是link 示例站点数据
<li class="s-item" data-view="mi:1686|iid:1">...</li>
<li class="s-item" data-view="mi:1686|iid:2">...</li>
<li class="s-item" data-view="mi:1686|iid:3">...</li>
<div class="srp-river-answer srp-river-answer--REWRITE_START" data-view="mi:1706|iid:1">...</div>
<li class="s-item" data-view="mi:1686|iid:4">...</li>
<li class="s-item" data-view="mi:1686|iid:5">...</li>
<li class="s-item" data-view="mi:1686|iid:6">...</li>
目标是在 div 语句之前获取所有 li 标签,在 div 语句之后获取所有标签。前后的 li 标签数量因页面而异。我已经尝试过,直到 html 中的某个点才找到一种方法来刮掉美丽的汤。
我目前使用以下检索所有 li 标签
only_li = SoupStrainer('li')
soup_li = BeautifulSoup(response.text, 'lxml', parse_only = only_li)
sale_details = soup_li.find_all('li', attrs={'class':'s-item','data-view':True})
for sale in sale_details:
some scrape code
【问题讨论】:
-
你现在是如何得到这部分的?可以给你的代码(至少这部分输出)?
-
我把它添加到你的问题中
-
您想转义 'div' 是为了提高代码效率还是仅仅为了一些错误?
-
我只想要 li 标签在 div 之前而不是在 div 之后
标签: python html web-scraping beautifulsoup