Python爬行粘贴库(JavaScript呈现的网页)
我在尝试抓取JavaScript呈现的页面时遇到了一个问题 根据本教程,我正在使用python-qt4模块: 在本教程中,所有内容都与示例页面完美配合: 但我正在用pastebin和这个URL进行尝试: 我正在尝试的是获取所有链接,以便单击它们,并且能够跟踪页面(我还不知道我将使用什么,可能是Scrapy,但我想看看其他选项) 问题是我无法提取链接,这是我的代码:Python爬行粘贴库(JavaScript呈现的网页),javascript,python,selenium,scrapy,web-crawler,Javascript,Python,Selenium,Scrapy,Web Crawler,我在尝试抓取JavaScript呈现的页面时遇到了一个问题 根据本教程,我正在使用python-qt4模块: 在本教程中,所有内容都与示例页面完美配合: 但我正在用pastebin和这个URL进行尝试: 我正在尝试的是获取所有链接,以便单击它们,并且能够跟踪页面(我还不知道我将使用什么,可能是Scrapy,但我想看看其他选项) 问题是我无法提取链接,这是我的代码: import sys from PyQt4.QtGui import * from PyQt4.QtCore import
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
#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://pastebin.com/search?q=ssh'
r = Render(url)
result = r.frame.toHtml()
formatted_result = str(result.toAscii())
tree = html.fromstring(formatted_result)
archive_links = tree.xpath('//a[@class="gs-title"]/@data-ctoring')
for i in archive_links:
print i
结果是:我什么都没有得到。理想情况下,您应该研究使用
Pastebin
API-下面是一个示例
另一种方法是通过浏览器实现自动化。打印搜索结果链接的工作代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://pastebin.com/search?q=ssh")
# wait for the search results to be loaded
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".gsc-result-info")))
# get all search results links
for link in driver.find_elements_by_css_selector(".gsc-results .gsc-result a.gs-title"):
print(link.get_attribute("href"))
这个解决方案很好。我怎样才能浏览这10页并提取URL?基本上,如何点击东西。顺便说一下,我不确定这行是怎么做的:<代码>等待。直到(EC)VisuBIILITY OF EnEntMyLead((By.CSSHealStor,”GSC结果信息))< < /代码> @ Adon考虑为后续问题创建单独的问题。此行有助于等待特定元素可见-请参阅。谢谢