【问题标题】:Using requests and Beautifulsoup to find text in page (With CSS)使用 requests 和 Beautifulsoup 在页面中查找文本(使用 CSS)
【发布时间】:2016-12-23 01:51:45
【问题描述】:

我正在向网页发出请求,并试图检索其中的一些文本。文本用 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 表)表示我们是否必须将文本打印到屏幕上,因此,不要在屏幕上打印乱码。这是工作表 1 的示例:

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

但是有更多这样的CSS文件..所以我不知道是否有更好的方法来实现我的目标(打印屏幕上显示的文本而不使用未显示的乱码)

我的脚本能够打印文本.. 但所有内容(带有乱码)如下:“这是 jvgviehrgjfne 我的 gt4ugirdfgr 脚本!”

【问题讨论】:

  • 你也可以发布你尝试过的python脚本吗?
  • css 文件没有意义。

标签: python css beautifulsoup python-requests


【解决方案1】:

如果我理解正确,您应该做的是使用正则表达式解析 css 文件以获取与 inline 关联的属性,并将结果提供给漂亮的汤 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2013-10-04
    • 2022-01-20
    • 2023-03-16
    • 2021-05-24
    • 2015-02-20
    相关资源
    最近更新 更多