Datapoint не может быть очищен с помощью scrapy и python

Deba спросил: 28 марта 2018 в 03:00 в: python

Я хочу очистить заголовок события.

Для этого я написал следующие команды xpath, ни одна из которых не работала:

response.xpath('//h1/@title').extract()response.xpath('//id/class/h1/@title').extract()response.xpath('//*[@class ="pd-lr-10 span9"]/h1/@title').extract()response.xpath('//*[@class = "banner-container"]/h2').extract()response.xpath('//*[@class = "overlay-h1"]/@title').extract()

Все приведенные выше команды возвращают пустой список.

2 ответа

Land Owner ответил: 28 марта 2018 в 05:42

Эти работают. Это может быть связано с ошибкой 503. В оболочке Scrapy используйте view(response), чтобы проверить, получаете ли вы страницу или нет. После этого вы можете выбрать один из этих селекторов.

response.xpath('//*[@class ="pd-lr-10 span9"]/h1/@title').extract()response.xpath('//*[@class = "overlay-h1"]/@title').extract()response.xpath('//h1/@title').extract()

Примечание. Если вы не включили ПОЛЬЗОВАТЕЛЬСКИЙ АГЕНТ в свой файл настроек, это может вам помочь. Или вы можете изменить свой IP-адрес.

Deba ответил: 28 марта 2018 в 06:05
Я проверил другие сайты, написав команды xpath специально для этих сайтов. Они работали. Только для этого сайта, что бы я ни писал, получаю пустой список. :(
Land Owner ответил: 28 марта 2018 в 06:06
пожалуйста, прочтите примечание, которое я добавил позже. Добавьте ПОЛЬЗОВАТЕЛЬСКОГО АГЕНТА или сбросьте свой IP-адрес, если можете. Потому что нет ничего плохого в том xpath, который я показал
Deba ответил: 30 марта 2018 в 07:18
Привет, я написал эту команду для оболочки scrapy, и она сработала: оболочка scrapy"allevents.in/kolkata/gourmet-cookies-workshop-on-21st-april/…; -s USER_AGENT="Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit /537.36 (KHTML, как Gecko) Chrome / 65.0.3325.181 Safari / 537.36"Но как мне написать команду сканирования сканирования?
Land Owner ответил: 30 марта 2018 в 01:04
в файле settings.py вы можете найти строку АГЕНТ ПОЛЬЗОВАТЕЛЯ, добавить ее туда.
SIM ответил: 28 марта 2018 в 06:40

Попробуйте xpath, чтобы получить заголовок:

response.xpath("//h1[@class='overlay-h1']/text()").extract_first()

Вот как вы можете попробовать любую IDE:

import scrapy
from scrapy.crawler import CrawlerProcessclass AlleventsTestSpider(scrapy.Spider):
    name = 'titlegrabber'
    start_urls = ['https://allevents.in/kolkata/gourmet-cookies-workshop-on-21st-april/1649973561753390']    def parse(self, response):
        title_one = response.xpath("//h1[@class='overlay-h1']/@title").extract_first()
        title_two = response.xpath("//h1[@class='overlay-h1']/text()").extract_first()        yield {
                "TitleOne":title_one,
                "TitleTwo": title_two
            }c = CrawlerProcess({
    'USER_AGENT': 'Mozilla/5.0',})
c.crawl(AlleventsTestSpider)
c.start()
Deba ответил: 28 марта 2018 в 06:06
Не работает. Даже не получая пустой список. Нет ошибки тоже.
SIM ответил: 28 марта 2018 в 06:11
Хорошо, я обновлю свой пост рабочим решением, если вы знакомы с CrawlerProcess (). Дай мне знать. С CrawlerProcess () вы можете запускать scrapy из любой IDE, как in, sublime, atom и т. Д.
Deba ответил: 28 марта 2018 в 06:32
Я не знаю, но я хочу учиться. Пожалуйста, напишите ваше решение. Я сделаю все возможное, чтобы понять это. Между прочим, после изменения моей сети Интернет и идентификатора, я не могу видеть вывод.
SIM ответил: 28 марта 2018 в 06:41
Я добавил скрипт, который должен дать вам один и тот же заголовок дважды.