[Python]爬虫02:用Beautifulsoup抓取的网页中有br标签,返回字符串为None,先用replace去除网页中br再抓内容。

问题:用Beautifulsoup抓取网页,网页中含有br标签,抓取相关的内容结果是None。

试了用字符串的replace函数替换br,还是返回None。试了用re正则替换br,提示返回类型错误。

原因:br标签通常是单独使用,但Beautifulsoup只能抓取成对的标签,所以碰到br时返回None。

办法:网页就是一个字符串,可以用字符串内建函数repalce先把网页中的br标签替换为空,再用Beautifulsoup抓取网页内容。开始使用replace报错,是因为直接对soup使用repalce,但soup不是字符串对象,没有replace方法,所以没法去除br。

对于requests获取的网页,可以用r.text获取字符串,再用replace去除br。

重点:搞清楚库返回的对象类型,才能用正确方法进行处理

代码:

from bs4 import BeautifulSoup

html_doc='''

    1
    2(一心
一意) 3(两全
齐美) 放弃1次
''' soup=BeautifulSoup(html_doc,'lxml') for i in soup.find_all('td'): print(i.string)
结果:
1
None
None
None

修改后:

new_html=(html_doc.replace('
','')).replace('
','') #网页就是一个字符串对象,可以使用replace替代 soup=BeautifulSoup(new_html,'lxml')

对于requests获取的网页内容:

r=requests.get(url)
newr=r.text.replace('
','')

你可能感兴趣的:(Python)