Не удалось запустить мой сканер скрапа в браузере без головы - PullRequest
0 голосов
/ 21 сентября 2019

Я написал сканер для очистки Foursquare . Дело в том, что я могу получить из него название 30 ресторанов, но не могу прочитать из него данные о нумерации страниц.

Я попытался очистить нормально, затем использовал селен также, но в браузере без головы он не работает и иногда не может нажать также.Как я могу прочитать все 90 имен на этих страницах. Если это возможно без использования селена.

import scrapy
from time import sleep
from selenium import webdriver
from scrapy.selector import Selector
from Crawlers import settings
from selenium.webdriver.common.by import By

class Foursquare(scrapy.Spider):
    name = "learningexercise5"
    fs_base_url = 'https://foursquare.com'
    start_urls = ['https://foursquare.com/']
    chromedriver_path = settings.chromedriver_path
    def parse(self, response):

        options = webdriver.ChromeOptions()
        options.add_argument('--headless')
        driver = webdriver.Chrome(self.chromedriver_path, chrome_options=options)
        urls = ['https://foursquare.com/explore?cat=food&mode=url&near=New%20York%2C%20NY%2C%20United%20States&nearGeoId=72057594043056517']

        for url in urls:
            driver.get(url)
            sleep(30)
            x = driver.find_element(By.XPATH, '//button[@class="blueButton"]')
            driver.execute_script("arguments[0].click();", x)
            data = driver.page_source
            scrapy_html_response = Selector(text=data)
            data_row = scrapy_html_response.xpath(
                '//div[@id="results"]/ul/li/div[@class="contentHolder"]/div[@class="infoCol"]/div[@class="venueBlock"]/div[@class="venueDetails"]')
            for row in data_row:
                name = row.css('.venueName').xpath('h2/a/text()').get()
                location = row.css('.venueAddress::text').get()
                print(name, location)
...