Python 解析::在使用BS4之前

Python 解析::在使用BS4之前,python,parsing,beautifulsoup,request,Python,Parsing,Beautifulsoup,Request,尝试解析。正面:在之前 然后我需要得到“x”符号 # Getting 'x' symbol by class print(rows[0].find(class_="new-tables-content-col::before")) 输出 None Traceback (most recent call last): File "E:/Coding/PycharmProjects/kant-monitoring-bot/parser.py", lin

尝试解析。正面:在之前

然后我需要得到“x”符号

# Getting 'x' symbol by class
print(rows[0].find(class_="new-tables-content-col::before"))
输出

None
Traceback (most recent call last):
  File "E:/Coding/PycharmProjects/kant-monitoring-bot/parser.py", line 36, in <module>
    print(rows[0].select('.new-tables-content-row:not(.new-tables-content-header) .new-tables-content-col:last-child:before'))
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\bs4\element.py", line 1869, in select
    results = soupsieve.select(selector, self, namespaces, limit, **kwargs)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\__init__.py", line 98, in select
    return compile(select, namespaces, flags, **kwargs).select(tag, limit)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\__init__.py", line 62, in compile
    return cp._cached_css_compile(pattern, namespaces, custom, flags)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 208, in _cached_css_compile
    CSSParser(pattern, custom=custom_selectors, flags=flags).process_selectors(),
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 1043, in process_selectors
    return self.parse_selectors(self.selector_iter(self.pattern), index, flags)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 902, in parse_selectors
    has_selector, is_html = self.parse_pseudo_class(sel, m, has_selector, iselector, is_html)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 640, in parse_pseudo_class
    "'{}' pseudo-class is not implemented at this time".format(pseudo)
NotImplementedError: ':before' pseudo-class is not implemented at this time

Process finished with exit code 1
并使用选择方法(

输出

None
Traceback (most recent call last):
  File "E:/Coding/PycharmProjects/kant-monitoring-bot/parser.py", line 36, in <module>
    print(rows[0].select('.new-tables-content-row:not(.new-tables-content-header) .new-tables-content-col:last-child:before'))
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\bs4\element.py", line 1869, in select
    results = soupsieve.select(selector, self, namespaces, limit, **kwargs)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\__init__.py", line 98, in select
    return compile(select, namespaces, flags, **kwargs).select(tag, limit)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\__init__.py", line 62, in compile
    return cp._cached_css_compile(pattern, namespaces, custom, flags)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 208, in _cached_css_compile
    CSSParser(pattern, custom=custom_selectors, flags=flags).process_selectors(),
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 1043, in process_selectors
    return self.parse_selectors(self.selector_iter(self.pattern), index, flags)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 902, in parse_selectors
    has_selector, is_html = self.parse_pseudo_class(sel, m, has_selector, iselector, is_html)
  File "E:\Coding\PycharmProjects\kant-monitoring-bot\venv\lib\site-packages\soupsieve\css_parser.py", line 640, in parse_pseudo_class
    "'{}' pseudo-class is not implemented at this time".format(pseudo)
NotImplementedError: ':before' pseudo-class is not implemented at this time

Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“E:/Coding/PycharmProjects/kant monitoring bot/parser.py”,第36行,在
打印(行[0]。选择(')。新表内容行:非(.new tables content header)。新表内容列:最后一个子项:before'))
文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\bs4\element.py”,第1869行,选择
结果=soupsive.select(选择器、自身、名称空间、限制、**kwargs)
文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\soupsieve\\uuuu init\uuuu.py”,第98行,选择
返回编译(选择、名称空间、标志、**kwargs)。选择(标记、限制)
文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\soupsieve\\uuuu init\uuuu.py”,第62行,编译
返回cp.\u缓存的\u css\u编译(模式、名称空间、自定义、标志)
文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\soupsieve\css\u parser.py”,第208行,在_cached\u css\u compile中
CSSParser(pattern,custom=custom\u选择器,flags=flags)。process\u选择器(),
文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\soupsieve\css\u parser.py”,第1043行,进程内选择器
返回self.parse\u选择器(self.selector\u iter(self.pattern)、索引、标志)
parse_选择器中的文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\soupsieve\css_parser.py”,第902行
has_selector,is_html=self.parse_pseudo_类(sel,m,has_selector,iselector,is_html)
parse_pseudo_类中的文件“E:\Coding\PycharmProjects\kant monitoring bot\venv\lib\site packages\soupsieve\css_parser.py”,第640行
“{}”伪类此时未实现。格式(伪)
NotImplementedError:':before'伪类此时未实现
进程已完成,退出代码为1

如何正确地使用::before::after

解析元素正如错误所示,您正在使用的解析器中尚未实现这一点

为了解决这个问题,您可以使用一个支持它的解析器,比如lxml解析器

pip3 install --upgrade lxml bs4
soup=BeautufulSoup(page.content,'lxml')

另外,确保您使用的是Python 3和最新版本的bs4,作为SoupSive(BeautifulSoup中使用的精选库)的作者,我可以回答这个问题。不能使用
::before
解析伪元素

首先,伪元素不是实元素。渲染源时,浏览器可以创建这些伪元素,但源中不存在这些伪元素,只有渲染的实现。BeautifulSoup不呈现HTML,它只是解析它;因此,不存在伪元素。如果打印HTML源代码(在使用BeautifulSoup对其进行解析后),您将发现文档结构中没有
::before
元素


此外,soupsive目前不支持任何伪元素选择器。它支持许多选择器和大量伪类,但它根本不支持psuedo元素。

将解析器切换到“lxml”,但仍然没有实现错误