2015-12-28 3 views
0

Я разбираю XML-файл sitemap, и я наткнулся на один сайт, в частности, который реализует защиту ddos ​​от cloudflare. Первоначально я имел что-то вроде этого:Анализ XML с заголовками

from xml.dom import minidom 
import urllib, urllib2 

url='http://rsvpgallery.com/sitemap_products_1.xml?from=1&to=9999999999' 
xml = urllib.urlopen(url).read() 

Проверка переменной XML, мы можем видеть, что это приводит к странице защиты CloudFlare и что сайт запретил мой доступ, основанный на подписи моего браузера.

Чтобы исправить это, я хочу реализовать добавление заголовка User-Agent. Я имею в виду что-то вроде этого:

... 
req = urllib2.Request(url) 
req.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/47.0.2526.106 Chrome/47.0.2526.106 Safari/537.36') 
resp = urllib2.urlopen(req) 
url = resp.read() 
... 

Но когда я иду, чтобы объявить XML с этой новой переменной URL-адрес, я получаю эту ошибку:

xml = urllib.urlopen(url).read() 
    File "/usr/lib/python2.7/urllib.py", line 87, in urlopen 
    return opener.open(url) 
    File "/usr/lib/python2.7/urllib.py", line 205, in open 
    return self.open_unknown(fullurl, data) 
    File "/usr/lib/python2.7/urllib.py", line 217, in open_unknown 
    raise IOError, ('url error', 'unknown url type', type) 
IOError: [Errno url error] unknown url type: '?xml%20version=%221.0%22%20encoding=%22utf-8%22?%3e%0a%3curlset%20xmlns=%22http' 

Любые мысли или идеи о том, как идти о исправление этого было бы весьма полезно.

ответ

1

Она должна быть работа для вас:

from xml.dom import minidom 
import urllib2 as net 

headers = { 
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0', 
} 

url='http://rsvpgallery.com/sitemap_products_1.xml?from=1&to=9999999999' 
req = net.Request(url, headers=headers) 
xml = net.urlopen(req).read() 

print xml 

Ваш скрипт должен работать в любом случае ... Кажется, вы поменялись местами URL-адрес вар по XML-вар, это просто немного путаницы.

+0

Быстрый и эффективный ответ! Спасибо! –