Fazlul

Untitled

Jun 21st, 2021
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1.  
  2. import scrapy
  3.  
  4. from scrapy.selector import Selector
  5.  
  6. from selenium import webdriver
  7.  
  8. from selenium.webdriver.common.action_chains import ActionChains
  9.  
  10. from time import sleep
  11.  
  12.  
  13. class ProductSpider(scrapy.Spider):
  14.  
  15. name = "card"
  16. allowed_domains = ['moneyfacts.co.uk']
  17. start_urls = ['https://moneyfacts.co.uk/credit-cards/balance-transfer-credit-cards/?fbclid=IwAR05-Sa1hIcYTRx8DXYYQd0UfDRjWF-jD2-u51jiLP-WKlkxSddKjzUcnWA']
  18.  
  19.  
  20. def __init__(self):
  21. self.driver = webdriver.Chrome()
  22.  
  23.  
  24. def parse(self, response):
  25. self.driver.get(response.url)
  26. actions = ActionChains(self.driver)
  27.  
  28.  
  29. while True:
  30. next = self.driver.find_elements_by_css_selector("button#show-more")
  31.  
  32. if next:
  33. last_height = self.driver.execute_script(
  34. "return document.body.scrollHeight")
  35. self.driver.execute_script(
  36. "window.scrollTo(0, document.body.scrollHeight);")
  37. actions.move_to_element(next[0]).click().perform()
  38. sleep(5)
  39. print(dir(self.driver))
  40. self.driver.maximize_window()
  41.  
  42. lists = Selector(text=self.driver.page_source)
  43.  
  44. for list in lists.xpath('//ul[@id="finder-table"]/li'):
  45. yield{
  46. 'Name': list.xpath('.//*[@class="table-item-heading-product-name"]/span/strong/text()').get(),
  47. 'Title': list.xpath('.//*[@class="table-item-heading-product-name"]/span/text()').get()
  48. }
  49. else:
  50. break
  51.  
  52. self.driver.close()
  53.  
Advertisement
Add Comment
Please, Sign In to add comment