我正在嘗試從 seetickets.us 中抓取資料。我單擊每個組織,然后單擊該組織的所有事件。刮板從每個事件中正確刮取資料,但問題是當我回傳所有事件頁面時,Web 驅動程式找不到 css 選擇器。
這是網站結構:
https://ibb.co/WBjMDJf
點擊 World Cafe Live 將我帶到這里:
https://ibb.co/cLbMP19
單擊任何事件將使我了解有關事件的更多資訊。
現在,當驅動程式從提取每個事件回傳時,它無法進入其他事件。我也嘗試過顯式等待 anf time.sleep()
這是我的代碼:
#this is the func click on each event and extract data then come back to all event page
def get_all_events_in_each_event(self):
inner_events = self.get_all_inner_events()
print(len(inner_events))
for event in inner_events:
self.click_inner_event(event)
self.get_event_loc()
self.get_talent()
self.get_facebook()
self.get_date()
self.get_showtime_city()
self.get_ticket_doors()
self.back()
try:
WebDriverWait(self, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, "event-images-box")))
except Exception as e:
print("Wait Timed out")
print(e)
#this is the func to click on each event in all event pages
def click_inner_event(self , inner_event):
link = inner_event.find_element_by_css_selector('div[]')
link.click()
這是所有活動頁面的 HTML: https ://ibb.co/wcKWc68
請幫助我找出這里有什么問題。謝謝
uj5u.com熱心網友回復:
正如@Arundeep Chohan 一樣,正確地指出網路驅動程式在來回移動時會丟失參考,因此我不得不重新抓取所有元素。正確的代碼是:
def get_all_events_in_each_event(self):
inner_events = self.get_all_inner_events()
for i in range(len(inner_events)):
self.click_inner_event(inner_events[i])
self.get_event_loc()
self.get_talent()
self.get_facebook()
self.get_date()
self.get_showtime_city()
self.get_ticket_doors()
self.back()
inner_events = self.get_all_inner_events() #regrabbing the elements
感謝阿倫迪普的回答。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/492636.html
標籤:python-3.x 硒 硒网络驱动程序
