Вопрос по beautifulsoup, web-crawler, python – Извлекайте ссылки для определенного раздела только из блога с помощью BeautifulSoup

1

Я пытаюсь извлечь ссылки для определенного раздела только из Blogspot. Но вывод показывает, что коды извлекают всю ссылку внутри страницы.

Вот коды:

import urlparse
import urllib
from bs4 import BeautifulSoup

url = "http://ellywonderland.blogspot.com/"

urls = [url]
visited = [url]

while len(urls) >0:
      try:
          htmltext = urllib.urlopen(urls[0]).read()
      except:
          print urls[0]

      soup = BeautifulSoup(htmltext)

      urls.pop(0)
      print len (urls)

      for tags in soup.find_all(attrs={'class': "post-title entry-title"}):
           for tag in soup.findAll('a',href=True):
                tag['href'] = urlparse.urljoin(url,tag['href'])
                if url in tag['href'] and tag['href'] not in visited:
                    urls.append(tag['href'])
                    visited.append(tag['href'])

print visited

Вот HTML-коды для раздела, который я хочу извлечь:

<h3 class="post-title entry-title" itemprop="name">
<a href="http://ellywonderland.blogspot.com/2011/02/pre-wedding-vintage.html">Pre-wedding * Vintage*</a>

Спасибо.

Ваш Ответ

2   ответа
2

Если вам не обязательно использоватьBeautifulSoup Я думаю, что было бы легче сделать что-то вроде этого:

import feedparser

url = feedparser.parse('http://ellywonderland.blogspot.com/feeds/posts/default?alt=rss')
for x in url.entries:
    print str(x.link)

Выход:

http://ellywonderland.blogspot.com/2011/03/my-vintage-pre-wedding.html
http://ellywonderland.blogspot.com/2011/02/pre-wedding-vintage.html
http://ellywonderland.blogspot.com/2010/12/tissue-paper-flower-crepe-paper.html
http://ellywonderland.blogspot.com/2010/12/menguap-menurut-islam.html
http://ellywonderland.blogspot.com/2010/12/weddings-idea.html
http://ellywonderland.blogspot.com/2010/12/kawin.html
http://ellywonderland.blogspot.com/2010/11/vitamin-c-collagen.html
http://ellywonderland.blogspot.com/2010/11/port-dickson.html
http://ellywonderland.blogspot.com/2010/11/ellys-world.html

feedparser может проанализировать RSS-канал страницы блогов и может вернуть нужные данные, в этом случаеhref для заголовков сообщений.

это значит, я не могу извлечь больше, чем это? xera
Кстати, у меня есть вопрос, почему он только извлекает до 25 ссылок? xera
это максимальное количество ссылок, которое возвращает RSS-канал serk
0

вам нужно добавить .get к объекту:

напечатать Objecta.get ('href')

Пример изhttp://www.crummy.com/software/BeautifulSoup/bs4/doc/:

for link in soup.find_all('a'):
    print(link.get('href'))
Спасибо. Но он по-прежнему извлекает всю ссылку на странице блога. Мне нужен только href из <h3 class = "post-title entry-title" itemprop = "name">. xera

Похожие вопросы