在爬取网页的时候,用bs4库爬取网页上想要的一块标签,但是却不知道怎么提取里面的内容,或者不知道怎么得到标签里面的各种属性值,比如a标签的href属性的值,这里有几种方法:
- 使用get_text()或者是.text同时取出了div标签下的文本及子标签文本。
实例如图:
detials=dl.select('p')[0].text
print(detials)
运行结果如图:
可以看到后面的【详细】是在p标签下的子标签里面的内容
- 如果已经拿到了最里层的标签的话,可以直接用.string的方法获取标签内的文字
details = dl.select('p a')[0].string
运行结果:
- 有时候需要除去提取到文字中的空格,可以在获取到的文字使用.strip()方法除去多余的空格等
musicName = tds[1].div.a.string.strip() #.strip()方法除去多余的空格
- 如果拿到的并不是最里层的标签,但是要获取的文本在标签里面,那么可以用find+contents的方法,该方法返回的是一个数组,可以根据我们的需求得到特定的文本
details = dl.find('p').contents[0]
运行结果:
- 除此之外,还可以直接用标签.标签.get(‘属性值’)的方法获取标签里面的属性值
baseUrl = "http://www.win4000.com/wallpaper_detail_174092_1.html"
resp=requests.get(baseUrl).text
bs = BeautifulSoup(resp,"lxml")
a=bs.select('img.pic-large')
print(a[0].get("src"))
print(a[0].get("title"))
运行结果:
- 今天写程序的时候发现书上有另外一种解决非最深层拿到标签文字的方法
书上用的是split方法,一个标签内的文字和他的子标签内的文字会有\n,所以可以利用这一点,将其划分为列表类型,然后再取特定的下表就行了
网页代码:
提取代码如下:
musicName = tds[1].div.a.text.strip().split('\n')[0]
运行结果: