我试图抓取一个有这样一个部分的页面:
<a name="id_631"></a>
<hr>
<div class="store-class">
<div>
<span><strong>Store City</strong</span>
</div>
<div class="store-class-content">
<p>Event listing</p>
<p>Event listing2</p>
<p>Event listing3</p>
</div>
<div>
Stuff about contact info
</div>
</div>
页面是这样的部分列表,区别它们的唯一方法是通过<a>
标记中的name属性。
所以我想我想把目标对准,然后转到next_sibling,得到<hr>
,然后再转到下一个兄弟,得到<div class="store-class">
部分。我只想要那个div标签上的信息。
不过,我不知道如何针对这个<a>
标记来移动两个兄弟姐妹。当我尝试print(soup.find_all('a', {"name":"id_631"}))
时,它只会给出标记中的内容,这是没有意义的。
这是我的剧本:
import requests
from bs4 import BeautifulSoup
r = requests.get("http://www.tandyleather.com/en/leathercraft-classes")
soup = soup = BeautifulSoup(r.text, 'html.parser')
print(soup.find("a", id="id_631").find_next_sibling("div", class_="store-class"))
但我知道错误是:
Traceback (most recent call last):
File "tandy.py", line 8, in <module>
print(soup.find("a", id="id_631").find_next_sibling("div", class_="store-class"))
AttributeError: 'NoneType' object has no attribute 'find_next_sibling'
发布于 2015-11-25 21:46:39
soup.find("a", attrs={"name": "id_631"}).find_next_sibling("div", class_="store-class")
另外,html.parser
必须由lxml
或html5lib
代替。
另请参阅:
https://stackoverflow.com/questions/33926946
复制相似问题