использование urllib и beautifulsoup для поиска значений внутри «скрытых» тегов - PullRequest
0 голосов
/ 14 марта 2011

Я хочу знать, возможно ли отобразить значения скрытых тегов.Я использую urllib и beautifulsoup, но я не могу получить то, что хочу.

HTML-код, который я использую, написан ниже: (сохранено как hiddentry.html )

<html>

<head>
    <script type="text/javascript">
        //change hidden elem value
        function changeValue()
        {
            document.getElementById('hiddenElem').value = 'hello matey!';
        }

        //this will verify if i have successfully changed the hiddenElem's value
        function printHidden()
        {
            document.getElementById('displayHere').innerHTML = document.getElementById('hiddenElem').value;
        }
    </script>
</head>

<body>

    <div id="hiddenDiv" style="position: absolute; left: -1500px">
        <!--i want to find the value of this element right here-->
        <span id="hiddenElem"></span>
    </div>

    <span id="displayHere"></span>

    <script type="text/javascript">
        changeValue();
        printHidden();
    </script>

</body>

</html>

что я хочу напечатать - это значение элемента с идентификатором hiddenElem .чтобы сделать это, я попытался использовать комбо urllib и beautifulsoup.код, который я использовал:

from BeautifulSoup import BeautifulSoup
import urllib2
import urllib

mysite = urllib.urlopen("http://localhost/hiddentry.html")
soup = BeautifulSoup(mysite)
print soup.prettify()
print '\n\n'

areUthere = soup.find(id="hiddenElem").find(text=True)
print areUthere

, что я получаю как вывод, хотя Нет .есть идеи?это то, что я пытаюсь достичь даже возможно?

1 Ответ

2 голосов
/ 14 марта 2011

beautifulsoup анализирует HTML, полученный с сервера.Если вы хотите увидеть сгенерированные значения, вам нужно как-то выполнить встроенный javascript на странице до передачи строки в beautifulsoup.Запустив javascript, вы передадите модифицированный HTML-файл DOM в Beautifulsoup.

Что касается эмуляции браузера:

Используя эмуляцию браузера, вы должны иметь возможность снять базовый HTML, запустить эмуляцию браузера, чтобы выполнить javascript, а затем взять измененный DOM HTML и вставить его в beautifulsoup.

...