【发布时间】:2020-04-03 12:44:05
【问题描述】:
我已经开始了一个私人项目:在 Visual Studio Code (1.41.0) 中使用 Python 和 BeautifulSoup 进行网络抓取。
我能够抓取与我的“问题网站”具有相同结构的另一个网站。但是现在我遇到了,BeautifulSoup 没有找到所有 div 标签(每个站点应该有 20 个,我只找到了 3 个)。我已经在 Stack Overflow 上告知自己,但没有找到解决方案(或者显然不明白)。
网址:https://www.comparis.ch/gesundheit/arzt/pathologie
我感兴趣的html结构是这样的:
我从<div class="css-fh99y9 excbu0j0">...</div> 中获得了所有<div class="css-15dj4ut"></div>,但从<div class="css-roynbj excbu0j0"></div> 中没有。你知道为什么吗?
遍历每个 url 以到达每个站点。
for i in range(0, endIndex):
try:
if i == 0:
urls.append(basicUrl)
page = urllib.request.urlopen(urls[i])
soup = BeautifulSoup(page, 'html.parser')
getSurgeonName(soup)
else:
urls.append(basicUrl + urlAddon + str(i + 1))
page = urllib.request.urlopen(urls[i])
soup = BeautifulSoup(page, 'html.parser')
getSurgeonName(soup)
except:
print("An URL request error occured.")
功能版本 1:
def getSurgeonName(soup):
# gets just first 3 surgeons of site
docName = re.compile('css-15dj4ut')
docNameTags = soup.find_all('div', attrs={'class': docName})
for a in docNameTags:
docNameList.append(a.getText())
函数版本 2:
def getSurgeonName(soup):
parentClass = re.compile('css-fh99y9 excbu0j0')
parentItems = soup.find_all('div', attrs={'class': parentClass})
for parent in parentItems:
children = parent.findChildren('div', {"class": "css-15dj4ut"})
docNameList.append(children[0].getText())
parentClass = re.compile('css-roynbj excbu0j0')
parentItems = soup.find_all('div', attrs={'class': parentClass})
for parent in parentItems:
children = parent.findChildren('div', {'class': 'css-15dj4ut'})
docNameList.append(children[0].getText())
【问题讨论】:
标签: python html beautifulsoup