Python爬网Pastebin(JavaScript渲染的网页)
Python Crawling Pastebin (JavaScript rendered webpages)
我在尝试抓取JavaScript渲染的页面时遇到了一个问题。
我正在使用python-qt4模块,遵循本教程:https://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/
在本教程中,所有内容都与示例页面完美配合:http://pycoders.com/archive
但我正在用pastebin尝试这个,网址是:
http://pastebin.com/search?q=ssh
我正在尝试的是获得所有的链接,以便点击它们,并能够关注页面(我还不知道我要使用什么,也许是Scrapy,但我想看看其他选项)。
问题是我无法提取链接,这是我的代码:
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——这里是Python包装器。
另一种方法是通过selenium
实现浏览器自动化。打印搜索结果链接的工作代码:
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"))
相关文章:
- 打开网页后立即获取网页的活动javascript函数
- Android键盘不适用于包含Javascript的网页
- 网页上失败的javascript会导致所有其他脚本失败
- 使用javascript替换网页上的文本
- 同一网页中有多个javascript标记
- 使用Javascript从整个网页中删除具有特定类的所有span标记
- 如何通过javascript或jquerycookie获取网页的刷新次数
- 如何使用httpwebrequest在c#中获得网页(使用ajax/javascript的php)的最终响应
- 网页javascript根本没有执行
- 如何复制谷歌Chrome网页javascript徽标效果
- Python Selenium,抓取网页JavaScript表
- java程序可以作为网页javascript和数据库之间的中介吗
- 是否有一种方法来检查如果谷歌浏览器安装(和默认浏览器)通过网页/ JavaScript不安装任何客户端
- 我如何用Javascript或jQuery重定向我的网页??Javascript重定向
- IPad 5x操作系统错误地提供网页JavaScript是否常见?
- 传递HTML表单post数据到不同的文件/网页javascript变量(php)
- 当我添加另一个函数时,网页Javascript停止工作
- 如何从网页Javascript调用c#方法
- Cocoa插件调用网页javascript
- 提取网页javascript中的字段值