https://my.sa.ucsb.edu/public/curriculum/coursesearch.aspx
立即进行搜索,它将带您到课程,时间等列表。
输入其他样式元素时,我得到了一些东西,但当前样式却没有。
我希望抓取每门课程的时间数据,我正在使用beautiful soup
,而我的电话是
courseTimes = soup.find_all("td", {'style':'text-align: left;
vertical-align: top;'})
print courseTimes
但是它返回[]
,什么都没有。
edit:抱歉,我之前不清楚。这不是我的网站,所以我使用漂亮的汤来解析HTML数据。该网站包含用
包裹的纯文本 <td style = "text-align: left; vertical-align top;" >9:00AM - 10:30AM</td>
这是我的完整代码:
def parse_course_listings_for_lectures(self, raw_html):
soup = BeautifulSoup(raw_html, 'html.parser')
courseT = soup.find_all("td", {'style':'text-align: left; vertical-align: top;'})
print courseT
答案 0 :(得分:0)
以下内容将浪费您要查找的每一行的时间,问题之一是您需要单击搜索按钮来获取数据。这可以通过URLIB请求模块或Selenium完成。 BS只是一个可抓取的工具,这是python 3.X中的解决方案,您需要针对决定使用的浏览器获得正确的geckodriver:
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://my.sa.ucsb.edu/public/curriculum/coursesearch.aspx')
availbutton = driver.find_element_by_id('ctl00_pageContent_searchButton')
availbutton.click()
html = driver.page_source
soup = BeautifulSoup(html,'lxml')
rowindex = 0
while rowindex < 36:
i = 0
table_row=soup.find_all('tr',{'class':'CourseInfoRow'})[rowindex]
for td in table_row:
if (i == 15):
print(td)
i = i + 1
rowindex = rowindex + 1
样本输出:
<td class="Header Clickable" style="text-align: left; vertical-align: top; white-space: nowrap; padding-left: 5px;
padding-right: 5px;">
2:00pm - 3:20pm
</td>