2016-09-30 3 views
2

Я пытаюсь получить HREF этой части HTML:Выберите тег внутри класса с BS4

<h3 class="post-title entry-title" itemprop="name"> 
<a href="http://sslproxies24.blogspot.it/2016/10/01-10-16-free-ssl-proxies-1070.html">01-10-16 | Free SSL Proxies (1070)</a> 
</h3> 

Так что я создал этот скрипт:

import urllib.request 
from bs4 import BeautifulSoup 

url = "http://sslproxies24.blogspot.it/" 
soup = BeautifulSoup(urllib.request.urlopen(url)) 
for tag in soup.find_all("h3", "post-title entry-title"): 
    links = tag.get("href") 

Но ссылки, Безразлично» найти что-нибудь. Это потому, что класс «пост-название начального название», который я выбрал с BS4, не приписывать «HREF» ...

На самом деле выход:

print (tag.attrs) 

является:

{'itemprop': 'name', 'class': ['post-title', 'entry-title']} 

Как я могу сделать, чтобы выбрать элемент «a» и получить ссылки в href?

ответ

1

Вы можете быстро решить, получая внутренний a элемент:

for tag in soup.find_all("h3", "post-title entry-title"): 
    link = tag.a.get("href") 

где tag.a ярлык для tag.find("a").

Или, вы можете соответствовать a элемент непосредственно с CSS selector:

for a in soup.select("h3.post-title.entry-title > a"): 
    link = a.get("href") 

, где точка находится селектор приписывать класс, > означает прямой родитель-потомок.

Или, вы можете проверить itemprop атрибут вместо класса:

for a in soup.select("h3[itemprop=name] > a"): 
    link = a.get("href") 
+0

Я действительно спасибо вам! Это сработало! – CatchJoul