我们平常爬取数据时,会经常有多余的html便签,下面我们就来清洗一下这些标签:
1,只清洗标签,可以用正则,也可以用remove(),remove_tags()函数
正则清洗:
import re
html='<p class="txt" node-type="feed_list_content" nick-name="人民日报">\n 【<a href="http://s.weibo.com/weibo?q=" target="_blank">#13个求职新方向#</a>!有你心动的职业吗<img src="//img.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_bingbujiandan_org.png" title="[并不简单]" alt="[并不简单]" class="face">】近日,人社部、市场监管总局、统计局联合发布13个新职业,既有现在流行的人工智能、<em class="s-color-red">大</em><em class="s-color-red">数据</em>、云计算、物联网等工程技术人员,也有电子竞技员、无人机驾驶员等新颖工种…你心动了吗?哪些学校开设了相关专业值得关注?戳图了解↓↓转给正在求学的TA! </p>
pre = re.compile('>(.*?)<')
text= ''.join(pre.findall(html))
remove()用于删除多余的,我们不想要的特定的标签
doc = pq(html)
doc('.article-t style').remove()
如上是:想要class为article里面的内容,但又不想要style标签中的内容,就可以通过以上把style标签删除,然后再提取article下的所有内容。
remove_tags()删除含有完整的标签:
from w3lib.html import remove_tags
a = '<em><em>ai</em></em>工程师'
print(remove_tags(a))
ai工程师
2,清洗标签和标签包括的内容,用remove_tags_with_content(要清洗的文本,which_ones=(要清洗的标签,))函数
from w3lib.html import remove_tags_with_content a = "<span class=\"dp\">OTEzMjEzMTEzNDY=</span>9<span class=\"dp\">OTEzMjEzMTEzNDY=</span>132131134642891XT" print(remove_tags_with_content(a, which_ones=('span',))) 9132131134642891XT