Красивый суп для анализа URL, чтобы получить другие данные URL - PullRequest
25 голосов
/ 16 декабря 2010

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

В основном:

example.com/events/
    <a href="http://example.com/events/1">Event 1</a>
    <a href="http://example.com/events/2">Event 2</a>

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

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

Ответы [ 3 ]

63 голосов
/ 16 декабря 2010
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.
5 голосов
/ 17 мая 2014

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

$ easy_install beautifulsoup4

$ pip install beautifulsoup4

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

import bs4 as BeautifulSoup
3 голосов
/ 16 декабря 2010

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

Редактировать:

Недавнее открытие: Использование 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')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...