【发布时间】:2017-01-03 22:42:21
【问题描述】:
我遇到了一个意想不到的问题,我正在使用 Python 3.5 和 BeautifulSoup。 我要解析以下链接:
url = 'https://www.leboncoin.fr/chaussures/627533472.htm?ca=16_s'
import requests, bs4
res = requests.get(url)
res.raise_for_status()
DicoSoup = bs4.BeautifulSoup(res.text, "lxml")
我有兴趣检索报价中图片的链接。 当我检查网站的 html 时,我发现在标签 div 下可以找到类 'thumbnails',它们在标签跨度下,类 'item_imagePic',它们是 img 标签
但是,当我选择 div 标签时,span 标签无处可寻:
div = DicoSoup.select("div.thumbnails")
div
Out[54]:
[<div class="thumbnails" data-alt="Talons aiguilles Stéphane Kélian - 37.5">
<ul>
<li class="thumb selected trackable" data-info='{"event_name" : "ad_view::photos", "event_type" : "click", "click_type" : "N", "event_s2" : "2"}' id="thumb_0"></li>
<li class="thumb trackable" data-info='{"event_name" : "ad_view::photos", "event_type" : "click", "click_type" : "N", "event_s2" : "2"}' id="thumb_1"> </li>
<li class="thumb trackable" data-info='{"event_name" : "ad_view::photos", "event_type" : "click", "click_type" : "N", "event_s2" : "2"}' id="thumb_2"></li>
</ul>
</div>]
当我检查 html 内容时,我看到的是:
<div class="thumbnails" data-alt="Talons aiguilles Stéphane Kélian - 37.5" style="width: 596px;">
<ul style="">
<li id="thumb_0" class="thumb selected trackable" data-info="{"event_name" : "ad_view::photos", "event_type" : "click", "click_type" : "N", "event_s2" : "2"}"><span class="item_imagePic"><img src="//img0.leboncoin.fr/thumbs/d89/d89c778e852e4a175d5d1ba96b2ec9c220445732.jpg" alt="Talons aiguilles Stéphane Kélian - 37.5"></span></li>
<li id="thumb_1" class="thumb trackable" data-info="{"event_name" : "ad_view::photos", "event_type" : "click", "click_type" : "N", "event_s2" : "2"}"><span class="item_imagePic"><img src="//img1.leboncoin.fr/thumbs/7d9/7d9b62d9efd2187472dc16ca2794be1bbaeb1370.jpg" alt="Talons aiguilles Stéphane Kélian - 37.5"></span></li>
<li id="thumb_2" class="thumb trackable" data-info="{"event_name" : "ad_view::photos", "event_type" : "click", "click_type" : "N", "event_s2" : "2"}"><span class="item_imagePic"><img src="//img2.leboncoin.fr/thumbs/288/28865002bb34bad516574bd1e9b42d2a2bb928f2.jpg" alt="Talons aiguilles Stéphane Kélian - 37.5"></span></li>
</ul>
</div>
这怎么可能? 我需要做什么才能选择它们?
我试过了:
div = DicoSoup.select_one("div.thumbnails span.item_imagePic")
div = DicoSoup.select_one("div.thumbnails ul li span.item_imagePic")
div = DicoSoup.select("div.thumbnails ul li span.item_imagePic")
span = DicoSoup.find('span', {'class': 'item_imagePic'})
span = DicoSoup.find('span',id="thumb_0")
div = DicoSoup.select("div.thumbnails img")
div = DicoSoup.select("div.thumbnails span img")
div = DicoSoup.select("div.thumbnails ul li span.item_imagePic img")
他们都返回给我'NoneType'类型的对象
谢谢,
【问题讨论】:
-
当您在浏览器中检查它时,是的,所有内容都已呈现,右键单击并选择查看源,然后查看那里有什么。特别是
3 张照片处理
-
标签不在视图源中,我猜这是我正在解析的
-
Aaaah 好的,它位于查看源页面的不同位置。我应该可以从那里得到它。怎么可能呢?我在浏览器和查看源页面中看到不同的标签
标签: python parsing tags beautifulsoup