我想解析这个“<a href="javascript:8==99999?popDuelloDialog(2754288):popTeam(2386)">Gnistan</a>
”并提取文本。
我试图提取很多,但我不能成功。
我不知道如何使用这种格式构建一个方法“javascript come”:(numbers)
“,这些方法不重复。所以我需要这样一种方法,只使用重复部分并将提取文本体。
我的代码在这里:
import sys
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebPage
import bs4 as bs
import urllib.request
import re
from bs4 import BeautifulSoup
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()
url = 'http://www.mackolik.com/Genis-Iddaa-Programi'
client_response = Client(url)
source = client_response.mainFrame().toHtml()
soup = bs.BeautifulSoup(source, 'html.parser')
#pattern=re.compile(r"javascript:;")
#js_test = soup.find_all('a', href='javascript')
hreff=soup.find_all("a","javascript:;")
#js_test=soup.select('a[href^="javascript:\('(.*?)'\);"]')
#print(js_test.text)
#type(href)
for i in hreff:
print(hreff[i])
答案 0 :(得分:0)
你可以这样做我知道它在VB中但是你可以接受这个想法......
'look for the begining of <a href
Dim xstr As String = "<a href=javascript:8==99999?popDuelloDialog(2754288):popTeam(2386)>Gnistan</a>"
Dim xStart As Integer = InStr(xstr, "<a href")
If xStart > 0 Then
'look for the end
Dim AHREF As Integer = InStr(xStart, xstr, ">") + 1
'look for </a>
Dim endAHREF As Integer = InStr(AHREF, xstr, "</a>")
'take what you need
Dim Result As String = Mid(xstr, AHREF, endAHREF - AHREF)
End If
答案 1 :(得分:0)
IIUC所需要的只是让BeautifulSoup获取其"javascript"
属性中href
的所有锚标记。但是,您似乎要使用JavaScript创建要解析的内容,这需要使用selenium
和ChromeDriver
等网络驱动程序。使用BeautifulSoup和请求,我们可以看到您可能想要的内容不在html代码中,解决问题的逻辑将是:
from bs4 import BeautifulSoup
import requests
url = "http://www.mackolik.com/Genis-Iddaa-Programi"
data = requests.get(url).text
soup = BeautifulSoup(data, 'html.parser')
for tag in soup.findAll('a'):
if "javascript" in tag['href']:
print(tag.text)
上面的代码检查子字符串"javascript"
是否为 in
href
属性,如果为true则打印标记的文本。
使用selenium和ChromeDriver的逻辑几乎相同,但我们还需要其他方法:
from selenium import webdriver
url = "http://www.mackolik.com/Genis-Iddaa-Programi"
driver = webdriver.Chrome()
driver.get(url)
for tag in driver.find_elements_by_tag_name("a"):
if "javascript" in tag.get_attribute("href"):
print(tag.text)