Python.BeautifulSoup:尝试使用beautifulsoup在给定样式的网站上抓取纯文本

时间:2018-07-16 20:26:37

标签: python beautifulsoup

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

1 个答案:

答案 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>