问题描述
我正在尝试构建一个网络刮板,该刮板可访问学区网站并检索学校的名称和网站。我正在使用https://www.dallasisd.org/测试下面的代码。
我目前只能选择1)仅访问“学校”的下拉列表,以及2)在同一下拉列表中的<li>
标记中检索链接。
任何帮助将不胜感激!谢谢。
from bs4 import BeautifulSoup
from selenium import webdriver
import urllib.request
import requests
import re
import xlwt
import pandas as pd
import xlrd
from xlutils.copy import copy
import os.path
hdr = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }
browser = webdriver.Chrome()
url = 'https://www.dallasisd.org/'
browser.get(url)
html_source = browser.page_source
browser.quit()
soup = BeautifulSoup(html_source,"lxml")
for name_list in soup.find_all(class_ ='sw-dropdown-list'):
print(name_list.text)
解决方法
小学的下拉列表包含在
中,您可以在找到全部并获得链接之前进行访问:
from bs4 import BeautifulSoup
import requests
headers = {
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
url = 'https://www.dallasisd.org/'
req = requests.get(url,headers=headers)
soup = BeautifulSoup(req.content,'html.parser')
dropdown = soup.find('div',attrs={'id': "cs-elementary-schools-panel"})
for link in dropdown.find_all('li',attrs={'class': "cs-panel-item"}):
print("Url: https://www.dallasisd.org" + link.find('a')['href'])
您可以轻松地将此代码扩展到中学和中学