所有.我有一个关于BeautifulSoup with Python的快速问题.我有几个HTML看起来像这样(唯一的区别是链接和产品名称),我试图从"href"属性获取链接.
<div id="productListing1" xmlns:dew="urn:Microsoft.Search.Response.Document">
<span id="rank" style="display:none;">94.36</span>
<div class="productPhoto">
<img src="/assets/images/ocpimages/87684/00131cl.gif" height="82" width="82" />
</div>
<div class="productName">
<a class="on" href="/Products/ProductInfoDisplay.aspx?SiteId=1&Product=8768400131">CAPRI SUN - JUICE DRINK - COOLERS VARIETY PACK 6 OZ</a>
</div>
<div class="size">40 CT</div>
Run Code Online (Sandbox Code Playgroud)
我目前有这个Python代码:
productLinks = soup.findAll('a', attrs={'class' : 'on'})
for link in productLinks:
print link['href']
Run Code Online (Sandbox Code Playgroud)
这是有效的(对于页面上的每个链接我得到的东西/Products/ProductInfoDisplay.aspx?SiteId=1&Product=8768400131
); 但是,我一直试图弄清楚是否有办法在"href"属性中获取链接而不在"'上明确搜索'class =".我想我的第一个问题应该是这是否是找到这些信息的最佳方式(class ="on"看起来过于通用,并且可能在将来中断,尽管我的CSS和HTML技能不是那么好).我已经尝试了find,findAll,findAllnext等方法的多种组合,但我无法使其工作.这主要是我所拥有的(我重新排列并多次更改):
productLinks = soup.find('div', attrs={'class' : 'productName'}).find('a', href=True)
Run Code Online (Sandbox Code Playgroud)
如果这不是一个好方法,我怎样才能<a>
从<div class="productName">
标签中获取标签?如果您需要更多信息,请与我们联系.
谢谢.
我有一个包含两个项目列表的列表,一个单词和一个数字.这个列表将使用tablewidget呈现.
我的目标是生成一个包含两列并且具有必要行的表,但是具有单词的列的标题应该大于数字列.
我可以使用resize列来调整内容,但是我希望在调整大小后桌子周围没有白色的空白空间.
为了创建gui代码,我正在使用QtDesigner.Thanks.
我是Qt和GUI编程的新手,但我已经在python中编写了相当多的代码 - 编写模块等等.我需要为我的一些旧模块开发简单的GUI.
我想做的事情可以通过以下简单的例子来表示:
def f(x, y):
z = x + y
return z
Run Code Online (Sandbox Code Playgroud)
对于此功能,我将为x和y提供两个行编辑,为z提供一个.现在我创建一个按钮'计算',当我这样做时,我希望它从行编辑中获取x和y运行函数f(x,y)
并将输出提供给z.
有没有办法直接在Qt Designer中添加f(x,y)
用python编写的函数?
如果不是什么选择?
对于可以直接从闪存/笔/ USB /跳/拇指驱动器运行的应用程序,为了便于从一台机器移动到另一台机器,将用户设置存储在记忆棒上的同一目录中是有意义的.程序正在运行(而不是每台机器的Windows/Mac/Linux用户或系统目录).
QSettings()很方便,可以告诉它使用当前的工作目录吗?
这是一个小例子程序,它使用QSettings()保持其运行的屏幕位置:
from PySide import QtGui, QtCore
from PySide.QtGui import QTabWidget, QApplication
from PySide.QtCore import QSettings
class AbcApp(QTabWidget):
def __init__(self):
super(AbcApp, self).__init__()
self.settings = QSettings(QSettings.IniFormat,QSettings.SystemScope, '__MyBiz', '__settings')
self.settings.setFallbacksEnabled(False) # File only, not registry or or.
# setPath() to try to save to current working directory
self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, './__settings.ini')
# Initial window size/pos last saved
self.resize(self.settings.value("size", QtCore.QSize(270, 225)))
self.move(self.settings.value("pos", QtCore.QPoint(50, 50)))
self.tab = QtGui.QWidget()
self.textEdit = QtGui.QTextEdit(self.tab)
self.textEdit.setHtml('<font color=grey>[QTextEdit area]</font><p><center><font color=blue size=4><b>Allo Woyld</b></font></center>')
self.addTab(self.tab, 'tab1')
def closeEvent(self, e):
# …
Run Code Online (Sandbox Code Playgroud) 我试图将按钮的click()信号连接到我自己的函数.该按钮位于我使用QT Designer创建的小部件中.我用QUiLoader加载.ui文件,如下所示:
class MyWidget(QtGui.QMainWindow):
def __init__(self, *args):
QtGui.QMainWindow.__init__(self, *args)
loader = QtUiTools.QUiLoader()
file = QtCore.QFile("pyside_ui_qtdesigner_form_test.ui")
file.open(QtCore.QFile.ReadOnly)
self.myWidget = loader.load(file, self)
file.close()
self.setCentralWidget(self.myWidget)
btn = self.myWidget.findChild(QtGui.QPushButton, "HelloWorldButton")
btn.clicked.connect(self.slot1)
def slot1(self):
print "Received"
Run Code Online (Sandbox Code Playgroud)
这是连接按钮clicked()信号的正确方法吗?我看到我可以直接在Qt Designer中连接信号和插槽,但是我如何准备并在代码中进行这样的连接?附带问题:上面的代码有效,但主窗口显示错误的大小.如何确保尺寸合适?我应该用最小的高度/宽度限制来做到这一点吗?
我从Maya内部启动UI.如果UI尚未关闭,再次运行UI将完全冻结Maya(错误"事件循环已在运行")
在重新运行脚本之前手动关闭UI将阻止它冻结.但我想这不太实际.
有没有办法检测我正在尝试运行的UI是否已经存在?可能的力量关闭它?
我有一个QListView,我使用自定义绘图显示项目.在每个项目(即每个列表行)中,我希望能够显示一些用户可以单击的"超链接",然后调用某些功能.
我已经尝试检查官方文档(例如模型/视图编程)以及相当多的谷歌搜索,但还没有弄清楚如何实现这一目标.
我有两个想法,每个都有自己的问题:
我最初的方法是使用QListWidget和.setItemWidget(),其中我有一个带有布局和子窗口小部件的正确小部件.不幸的是,当我的列表增加到数百或数千个项目时,这太慢了.这就是我用委托更改为QListView的原因.
根据getOpenFileName说明:
QString fileName = QFileDialog.getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"));
Run Code Online (Sandbox Code Playgroud)
当我关闭它时,如何让对话框记住最后一次的路径?
什么是tr意味着tr("Open File")
什么?
谢谢
某些小部件允许我这样做:
self.widget.clicked.connect(on_click)
Run Code Online (Sandbox Code Playgroud)
但做:
self.widget.keyPressEvent.connect(on_key)
Run Code Online (Sandbox Code Playgroud)
将失败说该对象没有属性'connect'.
我知道对窗口小部件进行子类化并重新实现该keyPressEvent
方法将允许我响应该事件.但是,如何.connect()
从用户上下文中获取键盘事件或以其他方式说出来?
我需要获取动态内容,该内容由 ajax js 调用加载。
我真的不知道如何使用 PyQt,但我希望我能做到这一点。HTML是这样的:
<a href="#" id="id" onclick="A4J.AJAX.Submit('j_id0:j_id1:j_id110',event,{'similarityGroupingId':'j_id0:j_id1:j_id110:j_id582:0:j_id584'});return false;">NETHERLANDS</a>`
Run Code Online (Sandbox Code Playgroud)
我可以使用以下简单代码使用 PyQt 呈现页面:
def render(source_html):
import sys
from PyQt5.QtCore import QEventLoop
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
class Render(QWebEngineView):
def __init__(self, html):
self.html = None
self.app = QApplication(sys.argv)
QWebEngineView.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.setHtml(html)
while self.html is None:
self.app.processEvents(QEventLoop.ExcludeUserInputEvents | QEventLoop.ExcludeSocketNotifiers | QEventLoop.WaitForMoreEvents)
self.app.quit()
def _callable(self, data):
self.html = data
def _loadFinished(self, result):
self.page().toHtml(self._callable)
return Render(source_html).html
import requests
sample_html = requests.get('https://riverbankcomputing.com/software/pyqt/').text
print(render(sample_html))
Run Code Online (Sandbox Code Playgroud)
我如何运行“onclick”并获取内容?
python ×8
pyqt ×6
pyqt4 ×4
pyside ×3
qt-designer ×2
events ×1
html ×1
javascript ×1
pyqt5 ×1
qfiledialog ×1
qheaderview ×1
qlistview ×1
qt ×1
qt4 ×1
qtablewidget ×1
resize ×1