У меня этот код доступен из моего предыдущего эксперимента.Какие изменения необходимо сделать для получения кода состояния домена домена с помощью Scrapy?
import scrapy
class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['http://example.com/']
def parse(self, response):
for title in response.css('h2'):
yield {'Agent-name': title.css('a ::text').extract_first()}
next_page = response.css('li.col-md-3 ln-t > div.cs-team team-grid > figure > a ::attr(href)').extract_first()
if next_page:
yield scrapy.Request(response.urljoin(next_page), callback=self.parse)
Я не понять, как изменить этот код, чтобы принимать входной сигнал в виде списка URL из текстового файла (Может быть 200+ доменов) и проверить состояние HTTP доменов и сохранить его в файле. Я пытаюсь это проверить, живут ли домены или нет.
Что я ожидаю иметь выход есть:
example.com,200
example1.com,300
example2.com,503
Я хочу дать файл в качестве вклада в Scrapy сценарий, и он должен дать мне выше выход. Я постарался взглянуть на вопросы: How to detect HTTP response status code and set a proxy accordingly in scrapy? и Scrapy and response status code: how to check against it?
Но не повезло. Следовательно, я собираюсь изменить свой код и сделать это. Как я могу это сделать? Пожалуйста, помогите мне.
Что вы имеете в виду _ "проверить статус HTTP доменов" _? В вашем файле есть URL-адреса, вы имеете в виду _check статус HTTP каждого URL_? По умолчанию scrapy будет подавать только ваши обратные вызовы с ответами HTTP 200. Вы можете посмотреть мета-ключ ['handle_httpstatus_all'] (https://docs.scrapy.org/en/latest/topics/spider-middleware.html#std:reqmeta-handle_httpstatus_all), чтобы получить ответы не-200. –
@paultrmbrth Я просто хочу сохранить код состояния URL-адреса в другом файле с URL-адресом. Если возможно, я оставлю жизнь и уничтожу остальных. Это то, что я пытаюсь сделать. Вы можете мне помочь? Я обязательно прочитаю документ еще раз. Раньше я читал, но мне это не помогло. –
Можете ли вы собрать элементы (URL, статус)? что-то вроде 'yield {" url ": response.url," status ": response.status}' в вашем обратном вызове должно уже дать вам все ответы HTTP-200. –