python使用beautifulsoup中select方法爬虫时使用join和split方法配合处理特殊字符

问题参考

python如何去掉字符串‘\xa0’
Python split()方法

Python join()方法
python中join()函数的使用方法

问题背景

使用python对百度网页进行爬取时,爬取的摘要标签中,时间和文章内容在同一标签下,但属于同一标签,抓取的数据本身如果有空格,在编译的时候会输出字符\xa0 ,使用join和split的组合方法去掉

想要爬取目标数据:
在这里插入图片描述
使用beautifulsoup的select方法爬取出来的效果如下:
在这里插入图片描述
想要的输出的结果:
在这里插入图片描述

问题解决

使用join和split的组合方法去掉

  • split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
    参考网址Python split()方法
  • split()方法输出的是列表
a = 'abcv '
a.split()  # split方法输出的是列表

在这里插入图片描述

  • join方法输出的是字符串,刚好配合起来
''.join(i.get_text().split())  
# split方法输出的是列表
# join方法输出的是字符串,刚好配合起来

在这里插入图片描述
实际代码效果,只截取了片段

#     2 匹配摘要
    date = soup.select('.c-abstract')
#     print(len(date))
#     print(date)
#     摘要部分包含了时间,但时间后面带了一个空格,
# 在编译的时候会输出字符\xa0 ,使用join和split的组合方法去掉
    dict['date'] = [''.join(i.get_text().split()) for i in date]
#     print(dict['date'])
    print('摘要个数:',len(dict['date']))
    
#     3 匹配时间
    t = soup.select('span[class="newTimeFactor_before_abs c-color-gray2 m"]')
#     print(t)
    dict['time'] = [''.join(i.get_text().split()) for i in t]
#     print(dict['time'])
    print('时间个数:',len(dict['time']))

得到想要的在这里插入图片描述
效果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_55579895/article/details/120969352