1 | ||
Editor: geon
Time: 2005/09/03 16:33:55 GMT+0 |
||
Note: |
changed: - <h2> Beautiful Soup </h2> <table border="0"> <tr><td><p>Potřebujete něco vydolovat z HTML stránky a vůbec nemáte chuť se zabývat tím, jak HTML vypadá? Beautiful Soup rozkouskuje HTML stránku a vytvoří strom, který se dá procházet. Můžete pak požádat "Najdi všechny odkazy" nebo "Najdi všechny odkazy třídy <tt>vnejsiOdkazy</tt> nebo "Najdi všechny odkazy jejichž url je "neco.cz" nebo "Najdi tabulku, která má tučně hlavičku, a ten text mi dej." </p> <p>Tak jste tu správně.</p> <p>Beautiful Soup je Pythonský HTML/XML parser navržený pro snadné použití v projektech, které se zabývají dolováním dat z HTML stránek. Má dvě nadobyčejné přednosti: </p><ol> <li>Beautiful Soup nezhavaruje, když mu předávat špatnou značku. Vrátí rozkouskovaný HTML strom, který se bude podobat původnímu dokumentu co nejvíce. Na sběr dat to obyvkle stačí a vy můžete pokračovat dále. </li><li>Beautiful Soup poskytuje pár jednoduchých metod a Pythonovských idoimů pro navigaci a prohledávání rozkouskovaného HTML stromu: nástroj na rozebrání dokumentu a vyříznutí toho, co pořebujete. Nemusíte vytvářet vlastní parser pro každou aplikaci. </li></ol> <p>Hodnotná data umístněná na velmi špatně udělaném webu máte k dispozici během chvilky. Projekty, které by jinak trvaly hodiny, jsou záležitostí několika minut s BeautifulSoup. </p></td> <td bgcolor="#ffc694"><ul> <li><a href="http://www.crummy.com/software/BeautifulSoup/index.html">Homepage</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/index.html#Download">Download</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/CHANGELOG.html">What's new</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/documentation.html">Documentation</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/examples.html">Examples</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/FAQ.html">FAQ</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/TODO.html">To-do list</a> </li><li><a href="http://www.crummy.com/software/BeautifulSoup/AUTHORS.html">Contributors</a> </li></ul> </td></tr> </table> <h2>Stažení Beautiful Soup</h2> <p>Poslední verze je <a href="http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup.py">Beautiful Soup</a>. Můžete si ho stáhnout v jediném souboru nebo jako <a href="http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup.tar.gz">tarball</a> s instalačním scriptem a unit testy. Beautiful Soup je licencovaný stejným způsobem jako sám Python, takže ho můžete vložit téměř do kterékoliv pythonovské aplikace nebo jako knihovnu a ihned začít používat. Tato verze funguje s Pythonem 2.2+. </p><p><b>Bonus:</b> Pokud vyrábíte RSS feedy z webových stránek použití Beautiful Soup plus <a href="http://www.crummy.com/software/ScrapeNFeed/">Scrape 'N' Feed</a> je téměř ideální. </p> <hr> <h2> Jak používat Beautiful Soup? </h2> <p>Tady je pythonovská session, která ukazuje základní přednosti Beautiful Soup. </p><pre> >>> from BeautifulSoup import BeautifulSoup >>> import re >>> >>> <span class="comment">#Vytvoříme soup</span> ... input = '''<html> ... <head><title>Titulek stranky</title></head> ... <body> ... <p id="firstpara" align="center">Toto je odstavec <b>jedna</b>. ... <p id="secondpara" align="blah">Toto je odstavec <b>dva</b>. ... </html>''' >>> soup = BeautifulSoup(input) >>> >>> <span class="comment">#Search the soup</span> ... titleTag = soup.html.head.title >>> print titleTag <title>Titulek stranky</title> >>> >>> print titleTag.string Titulek stranky >>> >>> print len(soup('p')) 2 >>> >>> print soup('p', {'align' : 'center'}) [<p id="firstpara" align="center">This is paragraph <b>one</b>. </p>] >>> >>> print soup('p', {'align' : 'center'})[0]['id'] firstpara >>> >>> print soup.first('p', {'align' : re.compile('^b.*')})['id'] secondpara >>> >>> print soup.first('p').b.string jedna >>> >>> print soup('p')[1].b.string dva >>> >>> <span class="comment">#Modify the soup</span> ... titleTag['id']='theTitle' >>> titleTag.contents = ['Jiny titulek.'] >>> print soup.html.head.title <title id="theTitle">Jiný titulek.</title> </pre> <hr> <a href="http://creativecommons.org/licenses/by-sa/2.0/"><img src="http://www.crummy.com/nb//resources/img/somerights20.jpg" border="0"></a> - to platí na BeautifulSoup, ne na editaci této stránky ;-)
Potřebujete něco vydolovat z HTML stránky a vůbec nemáte chuť se zabývat tím, jak HTML vypadá? Beautiful Soup rozkouskuje HTML stránku a vytvoří strom, který se dá procházet. Můžete pak požádat "Najdi všechny odkazy" nebo "Najdi všechny odkazy třídy vnejsiOdkazy nebo "Najdi všechny odkazy jejichž url je "neco.cz" nebo "Najdi tabulku, která má tučně hlavičku, a ten text mi dej." Tak jste tu správně. Beautiful Soup je Pythonský HTML/XML parser navržený pro snadné použití v projektech, které se zabývají dolováním dat z HTML stránek. Má dvě nadobyčejné přednosti:
Hodnotná data umístněná na velmi špatně udělaném webu máte k dispozici během chvilky. Projekty, které by jinak trvaly hodiny, jsou záležitostí několika minut s BeautifulSoup. |
Poslední verze je Beautiful Soup. Můžete si ho stáhnout v jediném souboru nebo jako tarball s instalačním scriptem a unit testy. Beautiful Soup je licencovaný stejným způsobem jako sám Python, takže ho můžete vložit téměř do kterékoliv pythonovské aplikace nebo jako knihovnu a ihned začít používat. Tato verze funguje s Pythonem 2.2+.
Bonus: Pokud vyrábíte RSS feedy z webových stránek použití Beautiful Soup plus Scrape 'N' Feed je téměř ideální.
Tady je pythonovská session, která ukazuje základní přednosti Beautiful Soup.
>>> from BeautifulSoup import BeautifulSoup >>> import re >>> >>> #Vytvoříme soup ... input = '''<html> ... <head><title>Titulek stranky</title></head> ... <body> ... <p id="firstpara" align="center">Toto je odstavec <b>jedna</b>. ... <p id="secondpara" align="blah">Toto je odstavec <b>dva</b>. ... </html>''' >>> soup = BeautifulSoup(input) >>> >>> #Search the soup ... titleTag = soup.html.head.title >>> print titleTag <title>Titulek stranky</title> >>> >>> print titleTag.string Titulek stranky >>> >>> print len(soup('p')) 2 >>> >>> print soup('p', {'align' : 'center'}) [<p id="firstpara" align="center">This is paragraph <b>one</b>. </p>] >>> >>> print soup('p', {'align' : 'center'})[0]['id'] firstpara >>> >>> print soup.first('p', {'align' : re.compile('^b.*')})['id'] secondpara >>> >>> print soup.first('p').b.string jedna >>> >>> print soup('p')[1].b.string dva >>> >>> #Modify the soup ... titleTag['id']='theTitle' >>> titleTag.contents = ['Jiny titulek.'] >>> print soup.html.head.title <title id="theTitle">Jiný titulek.</title>