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
Ответы
Ответ 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')]