#selenium #scrapy #scrapy-spider
#селен #scrapy
Вопрос:
Я создал базовый Scrapy Spider, который очищает страницу категории продукта сайта, открывает все отдельные страницы продукта и очищает некоторую информацию о продукте. Когда для одной категории есть несколько страниц, сайт использует Javascript для обновления списка товаров (URL-адрес не меняется).
Я пытаюсь использовать Selenium для доступа к страницам, сгенерированным JS.
import time
import scrapy
from myscraper.items import myscraperItem
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
class websiteSpider(scrapy.Spider):
name = "myspider"
allowed_domains = ["example.com"]
start_urls = (
'http://www.example.com/cat1',
)
def __init__(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(10)
def parse(self, response):
self.driver.get(response.url)
while True:
next = self.driver.find_element_by_css_selector("li.active a#page_right div")
try:
for href in response.css('div.productlist h3 a::attr(href)'):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse_product_page)
time.sleep(10)
next.click()
except:
break
def parse_product_page(self, response):
...
Когда я запускаю это, я только очищаю продукты с первой страницы, как я могу перенести недавно сгенерированный исходный код для страниц 2 из Selenium в Scrapy? Я попробовал несколько вещей, связанных:
hxs = HtmlXPathSelector(response)
Но я действительно этого не понимаю, любая помощь была бы очень признательна!!
Спасибо
Комментарии:
1. Я уверен, что вы можете сделать это без использования selenium, откройте вкладку «Сеть» и перейдите на следующую страницу, будет сделан запрос, и вы получите ответ с желаемыми объектами. Вы можете сделать этот запрос напрямую. Если вам нужна дополнительная помощь, предоставьте ссылку на соответствующую страницу.
2. Спасибо @RafaelAlmeida — есть идеи для homebase.co.uk/en/homebaseuk/decorating /… ?