引言
我在爬取 建筑部企業(yè)項(xiàng)目信息的時(shí)候出現(xiàn)了數(shù)據(jù)丟失:以下 施工圖審查 中一共有組數(shù)據(jù),當(dāng)我遍歷內(nèi)容的時(shí)候發(fā)現(xiàn)數(shù)據(jù)停留在第一條的a標(biāo)簽就沒(méi)有繼續(xù)遍歷了。

image.png
后來(lái)查看F12

image.png
這個(gè)數(shù)據(jù)的中間有時(shí)候會(huì)出現(xiàn)空格,或者換行,導(dǎo)致后面的td標(biāo)簽無(wú)法識(shí)別。原因在于選擇的解析器沒(méi)有把文檔格式化,換成lxml就可以了。
from bs4 import BeautifulSoup
import lxml
soup = BeautifulSoup(html_doc, 'lxml') # 這里是出現(xiàn)問(wèn)題的地方,原來(lái)我的解析器是'html.parser'
"""施工圖審查"""
tab_sgtsc_list = soup.find('div', id='tab_sgtsc').find('table').find('tbody').find_all('tr')
try:
for tab_sgtsc in tab_sgtsc_list:
print('序號(hào)', tab_sgtsc.find_all('td')[0].text.strip())
print('施工圖審查合格書(shū)編號(hào)', tab_sgtsc.find_all('td')[1].text.strip())
print('省級(jí)施工圖審查合格書(shū)編號(hào)', tab_sgtsc.find_all('td')[2].text.strip())
try:
print('勘察單位名稱', tab_sgtsc.find_all('td')[3].find('a').text.strip())
except AttributeError:
print('勘察單位名稱', tab_sgtsc.find_all('td')[3].text.strip())
try:
print('設(shè)計(jì)單位名稱', tab_sgtsc.find_all('td')[4].find('a').text.strip())
except AttributeError:
print('設(shè)計(jì)單位名稱', tab_sgtsc.find_all('td')[4].text.strip())
print('施工圖審查機(jī)構(gòu)名稱', tab_sgtsc.find_all('td')[5].text.strip())
except IndexError:
print('沒(méi)有施工圖審查信息')
print("*" * 50)