я хочу нажать на ссылку на сайте, используя scrapy python

1
import scrapy
from selenium import webdriver


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://ozhat-turkiye.com/en/brands/a',
    ]

Я хочу нажать ссылку

    def __init__(self):
        self.drivers = webdriver.Firefox('C:/Program Files (x86)\Mozilla Firefox')

Я хочу нажать ссылку

def parse(self, response):
    for title in response.css('div.tabledivinlineblock a.tablelink50::attr(href)').extract():
        yield {'title': title,
               'response': response.url
               }

   # i want to click this a tag
    next = self.driver.find_element_by_xpath('//*[@id="maincontent_DataPager"]/a[last()]')

    # follow pagination links
    # for href in response.css('span#maincontent_DataPager a:last-child'):
    #
    #     yield response.follow(href, self.parse)

    next_page = response.css('span#maincontent_DataPager a:last-child::attr(href)').extract_first().strip()
    if next_page is not None:
        yield response.follow(next_page, callback=self.parse)
  • 0
    Мы можем лучше всего помочь вам, если вы опишите, где произошел сбой вашего скрипта, и конкретное сообщение об исключении, которое вы получите, когда он потерпит неудачу. Кроме того, пожалуйста, исправьте форматирование вашего вопроса ... текст и код перепутаны, поскольку я вижу это прямо сейчас.
Теги:
web-scraping
scrapy
selenium
selenium-webdriver

1 ответ

0
Лучший ответ

Следующий сценарий должен отображать требуемые элементы, изматывающие все клики, подключенные к следующей странице. Вы не можете использовать здесь response.follow() поскольку для этого не существует ссылки, кроме нажатия на нее.

import time
import scrapy
from selenium import webdriver

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://ozhat-turkiye.com/en/brands/a',
    ]

    def __init__(self):
        self.driver = webdriver.Firefox()

    def parse(self, response):
        self.driver.get(response.url)
        while True:
            time.sleep(5)
            for title in self.driver.find_elements_by_css_selector('div.tabledivinlineblock a.tablelink50'):
                yield {'title': title.text,'response': response.url}

            try:
                self.driver.find_element_by_css_selector('span#maincontent_DataPager a:last-child').click()
            except Exception: break

Я использовал harcoded wait внутри скрипта, который не рекомендуется вообще. Вы должны заменить это на Explicit Wait.

  • 0
    цель состоит в том, чтобы вызвать функцию javascript, в основном мои элементы разбиения на страницы щелкают по загрузке данных следующей страницы, и я хочу загрузить элементы через следующую кнопку, просто скажите мне, как вызвать функцию javascript, потому что мой href имеет функцию javascript, и я не знаю, как это назвать.
  • 0
    Проверьте название вашего поста. Однако вышеприведенный скрипт также заполняет содержимое следующей страницы, нажимая кнопку следующей страницы.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню