Есть ли какая-либо возможность проверить, работает URL или нет? перед передачей его следующей функции в scrapy, Python

#python #parsing #selenium-webdriver #web-scraping #scrapy

#python #синтаксический анализ #selenium-webdriver #веб-очистка #scrapy

Вопрос:

У меня есть 2 функциональных блока в моем scraper 1.Parse 2.Parse_info

В 1-м блоке я получил список URL-адресов. Некоторые из URL-адресов работают (у них уже есть ‘https://www.example.com /’ часть) Остальные URL-адреса не работают (у них нет ‘https://www.example.com /’ часть)

Итак, перед передачей URL-адреса во 2-й блок, т.е. parse_info; Я хочу проверить URL-адрес, и если он не работает, я хочу отредактировать его и добавить требуемую часть (‘https://www.example.com /’часть).

Ответ №1:

Вы можете использовать модуль запросов и получить код состояния веб-сайта — руководство по выполнению этого здесь .

Аналогично, если вы просто пытаетесь проверить, содержит ли URL-адрес определенную часть, т.е. ‘https://www.example.com /’, вы можете выполнить запрос регулярного выражения и сделать это.

Комментарии:

1. «Запрос регулярных выражений» сработал для меня. Спасибо за предложение.

Ответ №2:

Моя интерпретация вашего вопроса заключается в том, что у вас есть список URL-адресов, некоторые из которых имеют абсолютный адрес, например ‘https://www.example.com/xyz ‘ а у некоторых есть только относительная ссылка, например ‘/xyz’, которая принадлежит ‘https://www.example.com — сайт.

Если это так, вы можете использовать ‘urljoin’ для рационализации каждого из URL-адресов, например:

 >>> from urllib.parse import urljoin

>>> url = 'https://www.example.com/xyz'
>>> print(urljoin('https://www.example.com', url))
https://www.example.com/xyz

>>> url = '/xyz'
>>> print(urljoin('https://www.example.com', url))
https://www.example.com/xyz
  

Комментарии:

1. Да, я использую urljoin(), но перед этим я хотел проверить URL-адрес; что, если ‘ example.com — часть уже присутствует.