我想:
从括号中提取数字" javascript:analysis(XXXXXXX)"每场比赛
创建一个包含直接超链接的列表,例如:http://www.nowgoal.cc/analysis/XXXXXXX.html
还有更多......
代码:
import bs4 as bs
import sys
import re
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
class Page(QWebEnginePage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebEnginePage.__init__(self)
self.html = ''
self.loadFinished.connect(self._on_load_finished)
self.load(QUrl(url))
self.app.exec_()
def _on_load_finished(self):
self.html = self.toHtml(self.Callable)
print('READY!')
def Callable(self, html_str):
self.html = html_str
self.app.quit()
def main():
page = Page('http://www.nowgoal.cc/')
soup = bs.BeautifulSoup(page.html, 'html.parser')
lista = []
for x in soup.find_all("a", attrs={'title' : 'Match analyze'}):
lista.append(x)
for element in lista:
z = re.search(r"\((.......\))",element)
if z:
print(z.groups())
if __name__ == '__main__': main()
Python产生:TypeError:期望的字符串或类似字节的对象
我现在挣扎了几天,没有更多的想法来解决这个问题。我挖掘并尝试,搜索并结束无能为力。我真的想写更多代码并发展我的想法。请帮助,我在这里死。
答案 0 :(得分:0)
根据以下文档https://www.crummy.com/software/BeautifulSoup/bs4/doc/
soup.find_all
返回的元素不是字符串。它们是物体。除了每个对象都有各自的__str__
方法覆盖。
所以你没有传递字符串来搜索。但实际上是定制的美丽汤品。
for element in lista:
z = re.search(r"\((.......\))",element)
if z:
print(z.groups())
要修复,请务必将element
转换为字符串
for element in lista:
z = re.search(r"\((.......\))", str(element))
if z:
print(z.groups())