Соскоб с помощью Scrapy и Selenium
У меня есть паук-скрап, который сканирует сайт, который перезагружает контент через javascript на странице. Чтобы перейти к следующей странице, я использовал Selenium, чтобы щелкнуть ссылку месяца в верхней части сайта.
Проблема в том, что, хотя мой код перемещается по каждой ссылке, как и ожидалось, паук просто собирает данные за первый месяц (сентябрь) за количество месяцев и возвращает эти дубликаты.
Как я могу обойти это?
from selenium import webdriver
class GigsInScotlandMain(InitSpider):
name = 'gigsinscotlandmain'
allowed_domains = ["gigsinscotland.com"]
start_urls = ["http://www.gigsinscotland.com"]
def __init__(self):
InitSpider.__init__(self)
self.br = webdriver.Firefox()
def parse(self, response):
hxs = HtmlXPathSelector(response)
self.br.get(response.url)
time.sleep(2.5)
# Get the string for each month on the page.
months = hxs.select("//ul[@id='gigsMonths']/li/a/text()").extract()
for month in months:
link = self.br.find_element_by_link_text(month)
link.click()
time.sleep(5)
# Get all the divs containing info to be scraped.
listitems = hxs.select("//div[@class='listItem']")
for listitem in listitems:
item = GigsInScotlandMainItem()
, item['artist'] = listitem.select("div[contains(@class, 'artistBlock')]/div[@class='artistdiv']/span[@class='artistname']/a/text()").extract()
#
# Get other data ...
#
yield item