Python >> Python Program >  >> Python

Extrahera innehållet i "script" med BeautifulSoup

Från dokumentationen:

Från och med Beautiful Soup version 4.9.0, när lxml eller html.parser används, är innehållet i <script> , <style> och <template> taggar anses inte vara "text", eftersom dessa taggar inte är en del av sidans innehåll som är synligt för människor.

Så i princip det accepterade svaret från falsetru ovan är allt bra, men använd .string istället för .text med nyare versioner av Beautiful Soup, annars blir du förbryllad som jag var av .text returnerar alltid None för <script> taggar.


extract ta bort taggen från domen. Det är därför du får tom lista.

Hitta script med type="application/ld+json" attribut och avkoda det med json.loads . Sedan kan du komma åt data som Python-datastruktur. (dict för de givna uppgifterna)

import json
import urllib2

from bs4 import BeautifulSoup

URL = ("http://www.reuters.com/video/2014/08/30/"
 "woman-who-drank-restaurants-tainted-tea?videoId=341712453")
oururl= urllib2.urlopen(URL).read()
soup = BeautifulSoup(oururl)

data = json.loads(soup.find('script', type='application/ld+json').text)
print data['video']['transcript']