html =
<span class="title">
<a href="VIDEO HREF" title="title" class="js-pop">title text</a>"
</span>
代码=
class Client(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self.on_page_load)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def on_page_load(self):
self.app.quit()
client_response = Client(url)
source = client_response.mainFrame().toHtml()
soup = bs.BeautifulSoup(source, 'lxml')
for link in soup.findAll('a', class_='js-pop'):
href = link.get('href')
print(href)
print(link.text)
我希望它返回href链接和标题文本。
当我运行它时会打印每个包含文本“js-pop”的类,并且有多个名为“js-pop”的类不是我想要删除的类。
我尝试在selenium中抓取页面,当我尝试在class ='js-pop'
上找到href时,它会打印“none”我试图抓取的元素都有唯一的ID,CSS选择器和xpaths
我该如何定位这个元素?
答案 0 :(得分:1)
要显示href
,title
和范围文字,您可以执行以下操作:
import bs4 as bs
html = '<span class="title"><a href="VIDEO HREF" title="title" class="js-pop">title text</a></span>'
soup = bs.BeautifulSoup(html, 'lxml')
for link in soup.findAll('a', class_='js-pop', href=True, title=True):
print(link['href'])
print(link['title'])
print(link.text)
这会显示:
VIDEO HREF
title
title text
通过添加href=True
和title=True
,它告诉find只返回实际包含这两个属性的元素。