如何解析锚标签中的文本?
How to parse the text from an anchor tag?
我想解析这个“<a href="javascript:8==99999?popDuelloDialog(2754288):popTeam(2386)">Gnistan</a>
”并提取文本。
我尝试提取了很多,但都没有成功。
我不知道如何使用这种不重复的格式 "javascript comes ":(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])
你可以这样做我知道它在 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
IIUC 你需要做的就是让 BeautifulSoup 得到所有在 href
属性中有 "javascript"
的锚标签。但是,您要解析的内容似乎是使用 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
属性,如果为真则打印标签的文本。
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)
我想解析这个“<a href="javascript:8==99999?popDuelloDialog(2754288):popTeam(2386)">Gnistan</a>
”并提取文本。
我尝试提取了很多,但都没有成功。
我不知道如何使用这种不重复的格式 "javascript comes ":(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])
你可以这样做我知道它在 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
IIUC 你需要做的就是让 BeautifulSoup 得到所有在 href
属性中有 "javascript"
的锚标签。但是,您要解析的内容似乎是使用 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
属性,如果为真则打印标签的文本。
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)