我现在正在执行一项任务,从似乎由 javascript 呈现的类(class)列表中系统地抓取内容。我在网上使用 PyQt4 遵循了一些脚本但失败了(我在下面复制了)。更准确地说,该脚本在某些使用 javascript 的网站上运行,通过单击其特定链接来加载内容。但是,下面的网站(ouhk,我在脚本下面复制的链接)似乎并没有将用户引导到特定内容的链接,即Program Information,Program Structure and Fee等,而是使用标签容器和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 库!我已经用这个库抓取了多个网站。人们说它很慢,但就我的目的而言,它效果很好。
此外,如果您对网络抓取有点陌生,请查看 Xpaths 用于抓取否则难以获取的元素。使用 Xpath,您需要在 chrome 浏览器中做的就是右键单击页面,检查元素,展开所有标签,然后右键单击要抓取的标签并单击复制 Xpath,然后您可以将路径粘贴到模块中 Selenium 库。真的很简单,这里是 selenium 信息的链接。
关于javascript - 使用 Python PyQt 使用 Javascript 内容进行 Web 抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39620351/