Коды ответа HTTP приходят не туда, где на самом деле 200 - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь извлечь ссылки HTTP из XML. Затем пытается получить код ответа http для того же. Но, что интересно, я получаю либо 500, либо 400. Если я нажму на URL, я правильно получу изображение в браузере.

Мой код:

def extract_src_link(path):
with open(path, 'r') as myfile:
    for line in myfile:
        if "src" in line:
            src_link = re.search('src=(.+?)ptype="2"', line)
            url = src_link.group(1)
            url = url[1:-1]
            #print ("url:", url)
            resp = requests.head(url)
            print(resp.status_code)

Не уверен, что здесь происходит Вот так выглядит мой вывод

/usr/local/bin/python2.7 
/Users/rradhakrishnan/Projects/eVision/Scripts/xml_validator_ver3.py
Processing: 
/Users/rradhakrishnan/rradhakrishnan1/mobily/E30000001554522119_2020_01_27T17_35_40Z.xml
500
404
Processing: 
/Users/rradhakrishnan/rradhakrishnan1/mobily/E30000001557496079_2020_01_27T17_35_40Z.xml
500
404

Вот так выглядит мой вывод:

1 Ответ

0 голосов
/ 08 марта 2020

Мне как-то удалось разобраться с этим. Добавление агента пользователя решило проблему.

def extract_src_link(path):
    with open(path, 'r') as myfile:
        for line in myfile:
            if "src" in line:
                src_link = re.search('src=(.+?)ptype="2"', line)
                url = src_link.group(1)
                url = url[1:-1]
                print ("url:", url)
                # resp = requests.head(url)
                # print(resp.status_code)
                headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/37.0.2049.0 Safari/537.36'}

                r = requests.get('http://www.booking.com/reviewlist.html?cc1=tr;pagename=sapphire', headers=headers)
                print r.status_code
...