代码如图所示:
# -*- coding:utf-8 -*-
import webbrowser
import pyperclip
import sys
import bs4
import requests
search_target = pyperclip.copy("kkkk")
if len(sys.argv) > 1:
search_target = ' '.join(sys.argv[1:])
else:
search_target = pyperclip.paste()
res_temp = 'http://www.baidu.com/s?wd=' + search_target
webbrowser.open(res_temp)
res = requests.get(res_temp)
bsObj = bs4.BeautifulSoup(res.text, 'html.parser')
print(bsObj)
#h3 = bsObj.findAll('h3', {'class':'t'})
#print(h3)
print("---1---")
div = bsObj.findAll('div', {'class':'result c-container '})
print(div)
print("---2---")
h3 = div.findAll('h3',{'class':'t'})
print(h3)
print('---3---')
运行结果如下:
等到运行这一行:
h3 = div.findAll('h3',{'class':'t'})
就会出现错误。
很奇怪,也就是说,这一段代码可以采集div这个标签,却无法采集h3这个标签。
而网页源代码如下:
h3本来就是div这个标签下面的子标签,那为什么div可以采集到,h3 就无法采集到呢?
因为这里
div=bsObj.findAll('div', {'class': 'result c-container'})
div
是一个类似于 list 类型的对象, 没有findAll
这个方法, 你可以取div
其中的某一个进行操作, 比如: