【发布时间】:2020-03-30 02:08:14
【问题描述】:
我的问题是,在类似下面示例的情况下,我需要在 class=cls_003 中获取 TEXT#1 和 TEXT#2 并将它们存储为单独的字符串。我目前正在使用 Python、BeautifulSoup 和正则表达式打开网页,并使用 re.findall 获取所需的 div,然后使用 BeautifulSoup 获取文本。 有更好的方法吗?
我要抓取的 HTML 页面:
<div style="xxxx" class="cls_003"><span class="cls_003">----TEXT #1---</span></div>
<div style="xxxx" class="cls_003"><span class="cls_003">----TEXT #1---</span></div>
<div style="yyyy" class="cls_007"><span class="cls_007">----UNNECESSARY TEXT---</span></div>
<div style="yyyy" class="cls_007"><span class="cls_007">----UNNECESSARY TEXT---</span></div>class="cls_009">'r'End</span></div>
<div style="xxxx" class="cls_003"><span class="cls_003">----TEXT #2---</span></div>
<div style="xxxx" class="cls_003"><span class="cls_003">----TEXT #2---</span></div>
</div>class="cls_009">'r'End</span></div>
我目前正在运行的 Python 代码
soup_string = str(soup)
results = re.findall(r'(?m)<div style="xxxx" class="cls_003">.*?class="cls_009">'
r'End</span></div>', soup_string, flags=re.S)
soup2 = BeautifulSoup(results, features="lxml")
for result in results:
result_parsed = soup2.findAll("div", {"class": "cls_003"})
for q in result_parsed:
print(q.text)
print('\n')
【问题讨论】:
标签: python html regex web-scraping