Я использую scrapy, чтобы проверить, нормально ли работает какой-либо веб-сайт, когда я использую http://example.com
, https://example.com
или http://www.example.com
. Когда я создаю запрос Scrapy, он работает нормально. например, на моем page1.com
он всегда перенаправляется на https://
. Мне нужно получить эту информацию в качестве возвращаемого значения, или есть лучший способ, как получить эту информацию с помощью скрапа?
class myspider(scrapy.Spider):
name = 'superspider'
start_urls = [
"https://page1.com/"
]
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
url = response.url
# removing all possible prefixes from url
for remove in ['https://', 'http://', 'www.']:
url = str(url).replace(remove, '').rstrip('/')
# Try with all possible prefixes
for prefix in ['http://', 'http://www.', 'https://', 'https://www.']:
yield scrapy.Request(url='{}{}'.format(prefix, url), callback=self.test, dont_filter=True)
def test(self, response):
print(response.url, response.status)
Вывод этого паука таков:
https://page1.com 200
https://page1.com/ 200
https://page1.com/ 200
https://page1.com/ 200
Это хорошо, но я хотел бы получить эту информацию в качестве возвращаемого значения, чтобы знать, например, на http
указан код ответа 200, а затем сохраните его в словаре для последующей обработки или сохраните как файл json в файл (используя элементы в scrapy).
желаемый результат:
Я хотел бы иметь словарь с именем a
со всей информацией:
print(a)
{'https://': True, 'http://': True, 'https://www.': True, 'http://www.': True}
Позже я хотел бы собрать больше информации, поэтому мне нужно будет хранить всю информацию под одним объектом / json /...