我们在用爬虫解析html源码的时候,如果遇到有空白内容的节点,正常需要的部分呢,又找不到节点,如下图所示:
放大图是这样的:
如果我想获取上面的文字段落,就无法直接通过定位节点的方式获取text。
解决办法:
可以直接获取上一级可以获取的节点,例如上面的例子是获取到'id': 'zb_price_cont'
这个节点,然后把该节点下的所有文本用strings获取下来,然后用list进行分段。
(如果不用list装起来,所有文本会成段,不好分割文本)
import requests
from bs4 import BeautifulSoup
url="WWW.xxx.com"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}
response = requests.get(url, headers=headers)#一定要有headers
page_soup= BeautifulSoup(response.text, 'lxml')
# 用一个list(节点.strings) 就可以直接获取得到
words=list(page_soup.find('div', {'id': 'zb_price_cont'}).strings)
print(words)
结果就可以获得含有我们需要的内容的文本啦!
当然这个list里面含有【 空白的行 】和 【文本】。如果想要去掉空白部分,就需要遍历list,判断是不是len()==0, 是的部分去除就好了。