Как перехватывать ответ URL каждый раз, когда открывается новая вкладка - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь разработать проект по утилизации веб-страниц, в котором я проверяю веб-сайт Startup India, который вы можете использовать для подключения к стартапам. Здесь я нажал на основе некоторых фильтров, которые я выбрал, и нажал на каждый запуск, и когда я нажимаю на каждый запуск, я должен go внутри этого запуска и удалить его. Но я не могу удалить данные, потому что я не могу захватить ответ для очистки профилей при запуске Индии.

import scrapy
from selenium import webdriver
import os
import logging
class ProductSpider(scrapy.Spider):
    name = "product_spider"
    allowed_domains = ['https://www.startupindia.gov.in/']
    start_urls = ['https://www.startupindia.gov.in/content/sih/en/search.html?industries=sih:industry/advertising&states=sih:location/india/andhra-pradesh&stages=Prototype&roles=Startup&page=0']

    def __init__(self):
        cwd = os.getcwd()
        self.driver = webdriver.Chrome("C:/Users/RAJ/PycharmProjects/WebCrawler/WebCrawler/WebCrawler/spiders/chromedriver.exe")


    def parse(self, response):
        self.driver.get(response.url)


        next = self.driver.find_elements_by_xpath("//*[@id='persona-results']//a[@class='img-wrap']")


        logging.info(next)

        for i in next:
            try:
                logging.info(i.click())
                logging.info(response.url)

                # get the data and write it to scrapy items
            except:
                print("Yolo")

Код будет оценен

1 Ответ

1 голос
/ 17 января 2020

У меня есть проект настройки scrapy и я запускаю scrapy crawl product_spider, и он дает URL новой вкладки, открытой после нажатия на элемент.

import scrapy
from selenium import webdriver
import os
import logging
from selenium.webdriver.chrome.options import Options as ChromeOptions

CHROME_DRIVER_UBUNTU_PATH = "your chrome driver path"


class ProductSpider(scrapy.Spider):
    name = "product_spider"
    allowed_domains = ['https://www.startupindia.gov.in/']
    start_urls = [
        'https://www.startupindia.gov.in/content/sih/en/search.html?industries=sih:industry/advertising&states=sih:location/india/andhra-pradesh&stages=Prototype&roles=Startup&page=0']

    def __init__(self):
        cwd = os.getcwd()
        opts = ChromeOptions()
        opts.add_argument("--headless")  # for headless browser it's not necessary

        self.driver = webdriver.Chrome(executable_path=CHROME_DRIVER_UBUNTU_PATH, chrome_options=opts)

    def parse(self, response):
        self.driver.get(response.url)

        next = self.driver.find_elements_by_xpath("//*[@id='persona-results']//a[@class='img-wrap']")

        for i in next:
            try:
                i.click()  # click on image in page
                # move to new tab open
                self.driver.switch_to.window(self.driver.window_handles[next.index(i) + 1])
                logging.info(self.driver.current_url)

                self.driver.switch_to.window(self.driver.window_handles[0])
                # get the data and write it to scrapy items
            except Exception as e:
                print(e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...