2016-09-21 4 views
3

Теперь я выполняю задачу систематического изложения содержимого из списка курсов, который, как представляется, отображается javascript. Я выполнил несколько сценариев, используя PyQt4 в Интернете, но не смог (что я скопировал ниже). Точнее, сценарий работает на некоторых сайтах с javascript, который загружает контент с нажатием на его конкретную ссылку. Тем не менее, следующий веб-сайт (ouhk, ссылка, которую я скопировал ниже в сценарии), похоже, не содержит ссылки для направления пользователей на конкретный контент, а именно: информация о программе, структура программы и плата и т. Д. Вместо этого он использует контейнеры тегов и FTP для хранения и загрузки информации (которую я нашел из ее исходного кода).Веб-скребок с содержимым Javascript с использованием Python PyQt

Мне интересно, есть ли способ изменить следующий скрипт, чтобы я мог очистить этот контент с помощью PyQt4 или мне нужно искать другие способы достижения этой цели?

import sys 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 
from lxml import html 

from bs4 import BeautifulSoup 
#import urllib.request 
#from urllib.parse import urljoin 


#Take this class for granted.Just use result of rendering. 
class Render(QWebPage): 
    def __init__(self, url): 
    self.app = QApplication(sys.argv) 
    QWebPage.__init__(self) 
    self.loadFinished.connect(self._loadFinished) 
    self.mainFrame().load(QUrl(url)) 
    self.app.exec_() 

    def _loadFinished(self, result): 
    self.frame = self.mainFrame() 
    self.app.quit() 

url = 'http://www.ouhk.edu.hk/wcsprd/Satellite?pagename=OUHK/tcSchSing2014&c=C_LIPACE&cid=1450268562831&lang=eng&sch=LIP' 
r = Render(url) 
result = r.frame.toHtml() 
print result 

ответ

0

Изучите использование библиотеки селена! Я очистил несколько веб-сайтов с помощью этой библиотеки. Люди утверждают, что это медленно, но для моих целей он отлично работает.

Кроме того, если ваш новый вид веб-соскабливания, посмотрите, какие Xpaths предназначены для скребущих элементов, к которым в противном случае было бы трудно добраться. С Xpath все, что вам нужно сделать в браузере Chrome, - это щелчок правой кнопкой мыши на странице, элемент insspect, разворачивание всех тегов, а затем щелкните правой кнопкой мыши тег, который вы хотите очистить, и нажмите «Скопировать Xpath», затем вы можете вставить путь в модули в библиотека селена. На самом деле простая, есть ссылка на информацию о селене.

http://selenium-python.readthedocs.io/

+0

Вам также необходимо скачать драйвер хрома, посмотрите на YouTube для этого есть некоторые большие видео для настройки это! – BLang

+0

Спасибо за комментарии. Я также использую селен в некоторых других задачах. Но недостатком этого я считаю, что вам нужно дождаться загрузки страницы, прежде чем получить исходный код, что значительно замедлит процесс. Вот почему я обычно использую Beautifulsoup в веб-слоте. Или мне что-то не хватает? Это способ использования селена путем получения исходного кода страницы без полной загрузки страницы? –

+0

Хм, что я не уверен в этом с точки зрения селена (скорость обычно не проблема для моих целей), я не понимал, что BS может получить источник страницы без загрузки страницы. Извините, я не мог с этим поделать, но это отличная возможность поблагодарить за это! – BLang

Смежные вопросы