簡體   English   中英

Python Selenium 如何在一個代碼中與兩種不同的網站格式進行交互

[英]Python Selenium how to interact with two different website formats in one code

我正在交互的網站上有兩種格式:

  • http://15256160037.58food.com/contact/
  • http://hubeianran.58food.com/contact/

還有兩種鏈接格式:(標題在 a[1] 或 a[2]

<div class="company-left-title">
            <a href="http://hubeianran.58food.com/" target="_blank">湖北安然保健品有限公司</a>
                <p><a href="/company_hubeianran.html" target="_blank">[企業黃頁]</a></p>
                
            </div>

或者

<div class="company-left-title">
<a href="javascript:Go('/qy-l-0-4-3595-3595-1.html');">
            </a><a href="http://15256160037.58food.com/" target="_blank">亳州市九熹堂葯業有限公司</a>  
            </div>

我正在嘗試獲取這些網站上的聯系信息和網站,並將它們放入 csv 中。 在第二種格式中,我必須單擊另一個按鈕才能獲取整個信息

我用了:

driver.get('http://www.58food.com/qy-l-0-3595.html')
while True:
  try:
     links = [link.get_attribute('href') for link in driver.find_elements_by_xpath('//*[@class="company-left-title"]/a[2]')]
  except:
     links = [link.get_attribute('href') for link in driver.find_elements_by_xpath('//*[@class="company-left-title"]/a[1]')]
  locs = [loc.text for loc in driver.find_elements_by_xpath('//*[@class="company-text"]/p')]
    for link,loc in zip(links,locs):
        time.sleep(2)
        driver.get(link)
        windows = driver.window_handles
        driver.switch_to.window(windows[-1])
        driver.find_element_by_link_text('聯系方式').click()
        try:
          company = driver.find_element_by_xpath('//*[@class="rclefttop"]/strong').text
          con_num = driver.find_element_by_xpath('//*[@class="rcleftlist"]/i[1]').text
          driver.back()
          driver.back()
        except:
          company = driver.find_element_by_xpath('//*[@class="px14 lh18"]/table/tbody/tr[1]/td[2]').text
          driver.find_element_by_id('glo_contactway_content').click()
          con_num = driver.find_element_by_xpath('//*[@class="archives dr-archives relative"]/p[1]').text
          driver.find_element_by_id('close').click()
          website = driver.find_element_by_xpath('//*[@class="px14 lh18"]/table/tbody/tr[5]/td[2]/a').text
          driver.back()
          driver.back()
        dataframe = pd.DataFrame({'col1':company,'col2':con_num,'col3':con_num2,'col4':loc,'col5':website},index=[0])

    try:
        next_page = driver.find_element_by_link_text("下一頁")
        next_page.click()
    except:
          print('No more pages')
          break

ElementNotInteractableException:元素不可交互(會話信息:chrome=88.0.4324.104)

有人可以幫忙解決這個問題嗎?

可能是您嘗試單擊的 object 仍在加載,這就是為什么無法單擊的原因。 嘗試顯式等待,直到您嘗試單擊的 object 可見且可單擊。 有關更多信息,請參閱鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM