Подтвердить что ты не робот

Beautiful Soup, чтобы проанализировать URL-адрес, чтобы получить другие данные URL-адресов

Мне нужно разобрать URL-адрес, чтобы получить список URL-адресов, которые ссылаются на страницу подробностей. Затем с этой страницы мне нужно получить все детали с этой страницы. Мне нужно сделать это таким образом, потому что URL-адрес подробной страницы не регулярно увеличивается и изменяется, но страница списка событий остается прежней.

В принципе:

example.com/events/
    <a href="#" onclick="location.href='http://example.com/events/1'; return false;">Event 1</a>
    <a href="#" onclick="location.href='http://example.com/events/2'; return false;">Event 2</a>

example.com/events/1
    ...some detail stuff I need

example.com/events/2
    ...some detail stuff I need
4b9b3361

Ответ 1

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen('http://yahoo.com').read()
soup = BeautifulSoup(page)
soup.prettify()
for anchor in soup.findAll('a', href=True):
    print anchor['href']

Он предоставит вам список URL-адресов. Теперь вы можете перебирать эти URL-адреса и анализировать данные.

  • inner_div = soup.findAll("div", {"id": "y-shade"}) Это пример. Вы можете ознакомиться с учебниками BeautifulSoup.

Ответ 2

Для следующей группы людей, которые сталкиваются с этим, BeautifulSoup был обновлен до v4 на этом посту, поскольку v3 больше не обновляется.

$ easy_install beautifulsoup4

$ pip install beautifulsoup4

Для использования в Python...

import bs4 as BeautifulSoup

Ответ 3

Используйте urllib2 для получения страницы, затем используйте красивый суп, чтобы получить список ссылок, а также попробуйте scraperwiki.com

Edit:

Недавнее открытие: использование BeautifulSoup через lxml с помощью

from lxml.html.soupparser import fromstring

намного лучше, чем просто BeautifulSoup. Это позволяет вам делать dom.cssselect( "ваш селектор" ), который является спасателем жизни. Просто убедитесь, что у вас установлена ​​хорошая версия BeautifulSoup. 3.2.1 работает.

dom = fromstring('<html... ...')
navigation_links = [a.get('href') for a in htm.cssselect('#navigation a')]