Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用pythonpyqt使用Javascript内容进行Web抓取_Javascript_Python_Web Scraping_Pyqt - Fatal编程技术网

使用pythonpyqt使用Javascript内容进行Web抓取

使用pythonpyqt使用Javascript内容进行Web抓取,javascript,python,web-scraping,pyqt,Javascript,Python,Web Scraping,Pyqt,我现在正在执行一项任务,系统地从一个似乎由javascript呈现的课程列表中删除内容。我在web上使用PyQt4遵循了一些脚本,但失败了(我在下面复制了这些脚本)。更准确地说,该脚本在某些网站上使用javascript,通过单击特定链接加载内容。然而,以下网站(ouhk,我在下面的脚本中复制的链接)似乎没有为用户提供指向特定内容的链接,即节目信息、节目结构和费用等。相反,它使用标签容器和FTP存储和加载信息(我从其源代码中找到) 我想知道是否有任何方法可以修改下面的脚本,这样我就可以使用PyQ

我现在正在执行一项任务,系统地从一个似乎由javascript呈现的课程列表中删除内容。我在web上使用PyQt4遵循了一些脚本,但失败了(我在下面复制了这些脚本)。更准确地说,该脚本在某些网站上使用javascript,通过单击特定链接加载内容。然而,以下网站(ouhk,我在下面的脚本中复制的链接)似乎没有为用户提供指向特定内容的链接,即节目信息、节目结构和费用等。相反,它使用标签容器和FTP存储和加载信息(我从其源代码中找到)

我想知道是否有任何方法可以修改下面的脚本,这样我就可以使用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

了解如何使用selenium库!我用这个库浏览了多个网站。人们说它很慢,但就我而言,它工作得很好

另外,如果您对web抓取有点陌生,那么请查看XPath是用于抓取那些本来很难获取的元素的。使用Xpath,在chrome浏览器中只需右键单击页面,Inspect元素,展开所有标记,然后右键单击要刮取的标记并单击复制Xpath,然后可以将路径粘贴到selenium库中的模块中。非常简单,这里有一个硒信息链接


您还需要下载一个chrome驱动程序,在YouTube上查找,有一些很棒的视频可以设置它!谢谢你的评论。我还在其他一些任务中使用selenium。但我认为这样做的缺点是,在获取源代码之前,您必须等待页面加载,因此会大大降低处理速度。这就是为什么我通常使用Beautifulsoup来处理网页。还是我错过了什么?这是一种通过获取页面源代码而不完全加载页面来使用selenium的方法吗?嗯,就selenium而言,我不确定这一点(速度对我来说通常不是问题),我没有意识到BS可以在不加载页面的情况下获取页面源代码。对不起,我帮不上忙,但这是一个整洁的功能,谢谢通知!是的,BS可以通过一起使用“urllib.request”库来获取网页的源代码,比如“resp=urllib.request.urlopen(url_text)”,然后使用BS来解析它:“soup=beautifulsou(resp,from_encoding=resp.info().get_param('charset')”。你应该试试看。享受吧!非常感谢,我一定会的!!