【python小白】 写简单爬虫的时候遇到问题,采集不到想要的标签

代码如图所示:

# -*- 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---')

运行结果如下:

clipboard.png

等到运行这一行:

h3 = div.findAll('h3',{'class':'t'})

就会出现错误。
很奇怪,也就是说,这一段代码可以采集div这个标签,却无法采集h3这个标签。
而网页源代码如下:

clipboard.png
h3本来就是div这个标签下面的子标签,那为什么div可以采集到,h3 就无法采集到呢?

阅读 2.2k
1 个回答

因为这里div=bsObj.findAll('div', {'class': 'result c-container'})

>>> type(div)
<class 'bs4.element.ResultSet'>

div是一个类似于 list 类型的对象, 没有findAll这个方法, 你可以取div其中的某一个进行操作, 比如:

>>> div[0].findAll('h3', {'class': 't'})
[<h3 class="t"><a data-click="{
                        'F':'778317EA',
...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题