python-3.x - 刮掉class下br标签下的文字
问题描述
我一直在尝试在此页面中抓取地址: https ://www.yellowpages.my/listing/results.php?keyword=boutique&where=selangor&screen=2
br 标签下的地址我很难获取:在此处输入图片描述
我试过的
addresses = page_content.select(' .cbp-vm-address')[0]
address = addresses.get_text(' ', strip=True)
address = list(addresses.stripped_strings)
这并没有给我课堂上的一切
我也试过:
for br in page_content.findAll('br'):
item = br.next_siblings
item = list(item)
print(item)
这给了我如下结果(片段):
[<br/>, <br/>, <br/>, <br/>, <br/>, '\n', <a href="/solutions">DigitalSolutions</a>, '\n', <a href="https://www.yellowpages.my/deal/results.php">Deals</a>, '\n', <a class="sign-up" href="https://www.yellowpages.my/profile/add.php">Sign Up</a>, '\n', <a class="sign-up" href="https://www.yellowpages.my/profile/login.php">Login</a>, '\n']
我如何获得地址?在这里抓取相对较新。
解决方案
有趣的。我实际上也遇到了这个问题,但是通过</br>
在创建汤对象之前替换原始字符串中的所有标签来克服这个问题:
import requests
from bs4 import BeautifulSoup
raw = requests.get('https://www.yellowpages.my/listing/results.php?keyword=boutique&where=selangor&screen=2').text
raw = raw.replace("</br>", "")
soup = BeautifulSoup(raw, 'html.parser')
addresses = [x.text.strip().split("\r\n")[-1].strip() for x in soup.find_all("div", class_='cbp-vm-address')]
尽管如此,我觉得它不是最好的解决方案,因为它在加载汤对象之前对 HTML 进行了预处理,这对我来说并不是最佳实践。
推荐阅读
- python - 如何访问之前在另一个类中定义的类中的变量?
- angular - 对角度无线电变化的记录进行排序
- java - 将当前视图保存为位图
- r - 将调查列表对象转换为数据框并将字符串列拆分为多列
- python - 将 pandas 数据框列从 int 更改为 string 并保存为字符串 csv
- python - ModuleNotFoundError,但它在 anaconda (jupyter) 中运行
- excel - MS Graph API 使用范围保护 Excel 工作表函数
- python - 是否可以使用 BeautifulSoup 遍历 python 列表?
- c# - 如何删除列表内字符串中的所有字符串实例?
- sas - SAS 中所选日期范围的数据缺失