Python和Selenium - 从多个兄弟姐妹中获取数据

时间:2014-03-06 11:09:25

标签: python html selenium web-scraping

好的,所以我是python的新手,当然还有Selenium。我正在尝试抓取一个页面来获取数据,然后在python中处理这些数据,并有selenium点击链接和存储时间等...

我遇到的问题是页面没有按我喜欢的方式格式化。而不是这个......              标题         链接1         LINK2                   标题2         LINK3         LINK4 / A>      我有这个

<tr>
    <td>title<td>
</tr>
<tr>
    <td>
        <a href>link1</a>
    </td>
</tr>
<tr>
    <td>
        <a href>link2</a>
    </td>
</tr>
<tr>
    <td>
        <a href>link3</a>
    </td>
</tr>

继承我正在使用的HTML - http://pastebin.com/663T7mXc

我要做的是,获取所有链接,但根据它们的标题对它们进行分类。例如。 标题  链接1  链接2 标题2  链接3  链接4  链接5 标题3  链接6

等等。

由于链接不是与标题相同标记的子代,我发现它几乎不可能。

这是我到目前为止所拥有的

def test():
    print ("testing")
    browser = webdriver.Chrome()
    browser.get("http://urlforpage.com")
    meetings = browser.find_elements_by_xpath('/html/body/div[2]/table[2]/tbody/tr/td')
    i=0
    for meet in meetings:
        venue = meet.get_attribute("class")
        if venue == "bold":
            print "Venue: " + str(i) + " " + meet.text
            i+=1
        elif venue == "racing-insert-linked-events nextoff-inner-wrapper nextoff-scrollable-wrapper":
            print ("links")
            print venue.href


test()

我根据班级的“大胆”课程将标题拉出来,我的问题是,我不知道如何为其他标签内的链接提取网址和链接文字。

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

尝试尽可能少地更改代码,这就是您所追求的目标吗?

def test():
    print ('testing')
    browser = webdriver.Chrome()
    browser.get('http://urlforpage.com')
    meetings = browser.find_elements_by_xpath('/html/body/div[2]/table[2]/tbody/tr/td')
    for meet in meetings:
        if meet.get_attribute('class') == 'bold':
            print 'Venue: {venue}'.format(venue=meet.text)
        else:
            try:
                anchor = meet.find_element_by_tag_name('a')
                print 'link: {link}, text: {text}'.format(link = anchor.get_attribute('href'), text = anchor.text)
            except NoSuchElementException:
                pass  # Are you worried if something is neither a title (bold) nor contains an anchor?


test()