【问题标题】:how to bypass error in selenium python web scraping如何绕过 selenium python web 抓取中的错误
【发布时间】:2017-07-10 09:20:58
【问题描述】:

我为网页抓取编写了以下代码。没有 if else 循环部分的代码工作正常,我打算这样做。我有一个要抓取的 url 列表,如果在任何 url 中不存在的元素,那么我必须绕过该 url 并继续下一个。我绕过了没有元素的 url,但是我的正常抓取在 else 循环中不起作用。 有帮助吗?

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException  

urls= [
'http://www.marketsmojo.com/Stocks?StockId=1002687&Exchange=0'
]
f= open("lolly.txt","a+")
browser=webdriver.Chrome()
browser.maximize_window()
browser.get('http://www.marketsmojo.com/Stocks?StockId=565016&Exchange=0')
browser.find_element_by_xpath("//*[@id='step-0']/a/i").click()
for url in urls:
    browser.get(url)
    browser.execute_script("window.scrollTo(10,9500);")
    browser.implicitly_wait(2000)
    if browser.find_element_by_xpath("//div[contains(.,' No Shareholding data available ')]"):
        continue
    else:
        add=browser.find_element_by_css_selector('#btnShareholdingDashboardFullDetails')
        SearchButton = browser.find_element_by_css_selector('#btnShareholdingDashboardFullDetails')
        Hover = ActionChains(browser).move_to_element(add).move_to_element(SearchButton)
        Hover.click().perform()
        browser.find_elements_by_css_selector('#allquarters > div > table')
        add1 = browser.find_element_by_css_selector('#AllQuarters')
        SearchButton1 = browser.find_element_by_css_selector('#AllQuarters')
        Hover1 = ActionChains(browser).move_to_element(add).move_to_element(SearchButton1)
        Hover1.click().perform()
        data = []
        for tr in browser.find_elements_by_css_selector('#allquarters > div > table'):
            ths = tr.find_elements_by_tag_name('th')
            tds = tr.find_elements_by_tag_name('td')
            if ths: 
                data.append([th.text for th in ths])
            if tds: 
                data.append([td.text for td in tds])
            f.write(str(data))

    
browser.quit()

【问题讨论】:

  • 如果它没有错误地停止,这意味着没有错误,只是它没有像你想象的那样工作。
  • 发布你遇到的错误
  • @Arount:没有错误,没错,但是 else 块根本没有被执行。!网址被点击,网页永远存在。
  • 问题确实不清楚。
  • @GaurangShah 对我的英语部分感到抱歉。!希望现在应该没问题?

标签: python selenium web-scraping


【解决方案1】:

对不起,麻烦各位了,只是超时功能导致了打嗝。! 代码非常好。

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2020-11-04
    • 1970-01-01
    • 2022-01-11
    • 2012-12-20
    相关资源
    最近更新 更多