Python 使用请求和美化组查找页面中的文本(使用CSS)

Python 使用请求和美化组查找页面中的文本(使用CSS),python,css,beautifulsoup,python-requests,Python,Css,Beautifulsoup,Python Requests,我正在请求一个网页,并试图检索其中的一些文本。文本用span标记拆分,如下所示: <span class="ed">This</span> <span class="1">is</span> <span class="12">jvgviehrgjfne</span> <span class="dfe">my</span> <span class="fd">gt4ugirdfgr</s

我正在请求一个网页,并试图检索其中的一些文本。文本用span标记拆分,如下所示:

<span class="ed">This</span>
<span class="1">is</span>
<span class="12">jvgviehrgjfne</span>
<span class="dfe">my</span>
<span class="fd">gt4ugirdfgr</span>
<span class="df">string</span>
但是像这样的CSS文件还有很多。。因此,我不知道是否有更好的方法来实现我的目标(打印屏幕上显示的文本,不要使用未显示的胡言乱语)


我的脚本可以打印文本。。但所有这些(胡言乱语)都是这样的:“这是jvgviehrgjfne我的gt4ugirdfgr脚本!”

如果我没弄错,你应该做的是用正则表达式解析css文件中与
inline
相关的属性,并将结果提供给beautiful soup api。这里有一个方法:

import re
import bs4

page_txt = """
<span class="ed">This</span>
<span class="1">is</span>
<span class="12">jvgviehrgjfne</span>
<span class="dfe">my</span>
<span class="fd">gt4ugirdfgr</span>
<span class="df">string</span>
"""

css_file_read_output = """
.ed{display:inline}
.1{display:inline}
.12{display:none}
.dfe{display:inline}
.fd{display:none}
.df{display:inline}"""

css_file_lines = css_file_read_output.splitlines()

css_lines_text = []

for line in css_file_lines:
    inline_search = re.search(".*inline.*", line)
    if inline_search is not None:
        inline_group = inline_search.group()
        class_name_search = re.search("\..*\{", inline_group)
        class_name_group = class_name_search.group()
        class_name_group = class_name_group[1:-1] # getting rid of the last { and first .
        css_lines_text.append(class_name_group)
    else:
        pass

page_bs = bs4.BeautifulSoup(page_txt,"lxml")

wanted_text_list = []

for line in css_lines_text:
    wanted_line = page_bs.find("span", class_=line)
    wanted_text = wanted_line.get_text(strip=True)
    wanted_text_list.append(wanted_text)

wanted_string = " ".join(wanted_text_list)
重新导入
进口bs4
page_txt=“”
这
是
jvgviehrgjfne
我的
gt4ugirdfgr
一串
"""
css_文件_读取_输出=”“
.ed{display:inline}
.1{显示:内联}
.12{显示:无}
.dfe{display:inline}
.fd{显示:无}
.df{display:inline}”“”
css\u file\u lines=css\u file\u read\u output.splitlines()
css_行_文本=[]
对于css_文件_行中的行:
内联搜索=重新搜索(“.*inline.*”,第行)
如果内联搜索不是无:
inline\u group=inline\u search.group()
class\u name\u search=re.search(“\..*\{”,内联\u组)
class\u name\u group=class\u name\u search.group()
class_name_group=class_name_group[1:-1]#去掉最后一个{和第一个。
css\u行\u文本.append(类\u名称\u组)
其他:
通过
第2页bs=bs4.BeautifulSoup(第3页“lxml”)
想要的文本列表=[]
对于css_行_文本中的行:
通缉线=页面查找(“跨度”,类=行)
想要的文本=想要的行。获取文本(strip=True)
通缉文本列表。追加(通缉文本)
通缉犯字符串=“加入(通缉犯文本列表)

您是否也可以发布您尝试过的python脚本?css文件毫无意义。
import re
import bs4

page_txt = """
<span class="ed">This</span>
<span class="1">is</span>
<span class="12">jvgviehrgjfne</span>
<span class="dfe">my</span>
<span class="fd">gt4ugirdfgr</span>
<span class="df">string</span>
"""

css_file_read_output = """
.ed{display:inline}
.1{display:inline}
.12{display:none}
.dfe{display:inline}
.fd{display:none}
.df{display:inline}"""

css_file_lines = css_file_read_output.splitlines()

css_lines_text = []

for line in css_file_lines:
    inline_search = re.search(".*inline.*", line)
    if inline_search is not None:
        inline_group = inline_search.group()
        class_name_search = re.search("\..*\{", inline_group)
        class_name_group = class_name_search.group()
        class_name_group = class_name_group[1:-1] # getting rid of the last { and first .
        css_lines_text.append(class_name_group)
    else:
        pass

page_bs = bs4.BeautifulSoup(page_txt,"lxml")

wanted_text_list = []

for line in css_lines_text:
    wanted_line = page_bs.find("span", class_=line)
    wanted_text = wanted_line.get_text(strip=True)
    wanted_text_list.append(wanted_text)

wanted_string = " ".join(wanted_text_list)