Advertisement
wansyahi1

selenium

Jan 7th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. import csv
  2. from bs4 import BeautifulSoup as bs
  3. from selenium import webdriver
  4. from selenium.webdriver.support.ui import WebDriverWait
  5. from selenium.webdriver.support import expected_conditions as EC
  6. from selenium.webdriver.common.by import By
  7.  
  8. browser=webdriver.Chrome()
  9. browser.get('https://dir.businessworld.com.my/15/posts/16-Computers-The-Internet')
  10. WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "table.postlisting")))
  11. soup=bs(browser.page_source)
  12.  
  13. filename = "C:/Users/User/Desktop/test.csv"
  14. csv_writer = csv.writer(open(filename, 'w'))
  15.  
  16. pages_remaining = True
  17.  
  18. while pages_remaining:
  19. WebDriverWait(browser,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"table.postlisting")))
  20. for tr in soup.find_all("tr"):
  21. data = []
  22. # for headers ( entered only once - the first time - )
  23. for th in tr.find_all("th"):
  24. data.append(th.text)
  25. if data:
  26. print("Inserting headers : {}".format(','.join(data)))
  27. csv_writer.writerow(data)
  28. continue
  29.  
  30. for td in tr.find_all("td"):
  31. if td.a:
  32. data.append(td.a.text.strip())
  33. else:
  34. data.append(td.text.strip())
  35. if data:
  36. print("Inserting data: {}".format(','.join(data)))
  37. csv_writer.writerow(data)
  38.  
  39.  
  40. if len(browser.find_elements_by_xpath("//a[contains(.,'Next')]"))>0:
  41. browser.find_element_by_xpath("//a[contains(.,'Next')]").click()
  42. else:
  43. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement