如何使用Selenium或BeautifulSoup遍历这些javascript链接?

时间:2016-06-11 00:39:19

标签: python selenium beautifulsoup

我选择了Selenium,因为链接'hrefs是动态生成的,虽然通过bs4的某些方法是首选。

我使用的是PhantomJS,但也尝试过Firefox

尝试点击链接时,没有任何反应。

例如,

render() {
  if (Platform.OS === 'ios') {
    //Scroll View 
    return this.renderIOS();
  } else {
    return this.renderAndroid();
  }
}


renderIOS(){
 <ScrollView style={{marginTop: 10}}
        horizontal={true}
        pagingEnabled={true}
        ref={(scrollView) => { _scrollView = scrollView; }}
        onScroll={this._handleScroll}
        scrollEventThrottle={16}>
         /*your content go here*/
        </ScrollView>
}


renderAndroid() {
return (
  <ViewPagerAndroid
    ref="scrollview"
    initialPage={this.state.initialSelectedIndex}
    onPageSelected={this.handleHorizontalScroll}
    style={styles.container}>
    /* your pages go here */
  </ViewPagerAndroid>
 );
}

2 个答案:

答案 0 :(得分:2)

正如Orenthal所说,我发现链接被点击了。但是,要加载的页面是完全动态的,因此在尝试从该链接中提取之前需要至少休眠2秒。

答案 1 :(得分:1)

我不太确定我知道你要点击什么,但我点击了“Agora Pavillon C7”页面上的第一个列表,其中包含以下代码。

from selenium import webdriver

def so_test():

    driver = webdriver.Firefox()

    def connect():
        driver.get('http://www.achema.de/de/ausstellung/aussteller-und-produkte.html')
        div = driver.find_element_by_id('ix_result_aussteller')
        test_link = div.find_elements_by_tag_name('tr')
        link = test_link[0].find_element_by_tag_name('a')
        link.click()

    connect()

so_test()

如果您尝试单击上面的导航链接,则正确的目标将是:

from selenium import webdriver

def so_test():

    driver = webdriver.Firefox()

    def connect():
        driver.get('http://www.achema.de/de/ausstellung/aussteller-und-produkte.html')
        div = driver.find_element_by_id('ix_letters')
        test_link = div.find_elements_by_tag_name('li')
        link = test_link[0].find_element_by_tag_name('a')
        link.click()

    connect()

so_test()

这样的事情。如果我离开基地,请告诉我。我很乐意尝试进一步帮助。