鍍金池/ 問(wèn)答/Python  HTML/ 【python小白】 寫(xiě)簡(jiǎn)單爬蟲(chóng)的時(shí)候遇到問(wèn)題,采集不到想要的標(biāo)簽

【python小白】 寫(xiě)簡(jiǎn)單爬蟲(chóng)的時(shí)候遇到問(wèn)題,采集不到想要的標(biāo)簽

代碼如圖所示:

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

運(yùn)行結(jié)果如下:

clipboard.png

等到運(yùn)行這一行:

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

就會(huì)出現(xiàn)錯(cuò)誤。
很奇怪,也就是說(shuō),這一段代碼可以采集div這個(gè)標(biāo)簽,卻無(wú)法采集h3這個(gè)標(biāo)簽。
而網(wǎng)頁(yè)源代碼如下:

clipboard.png
h3本來(lái)就是div這個(gè)標(biāo)簽下面的子標(biāo)簽,那為什么div可以采集到,h3 就無(wú)法采集到呢?

回答
編輯回答
鹿惑

因?yàn)檫@里div=bsObj.findAll('div', {'class': 'result c-container'})

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

div是一個(gè)類(lèi)似于 list 類(lèi)型的對(duì)象, 沒(méi)有findAll這個(gè)方法, 你可以取div其中的某一個(gè)進(jìn)行操作, 比如:

>>> div[0].findAll('h3', {'class': 't'})
[<h3 class="t"><a data-click="{
                        'F':'778317EA',
...
2018年8月16日 07:38