found_url = 'http://test.com/All/0.html'
base_url = 'http://test.com/All/'
for page_number in range(0,1050,50):
url_to_fetch = "{0}{1}.html".format(base_url,page_number)
Это должно дать вам URL-адресов из 0.html
в 1000.html
Если вы хотите использовать urlparse
(как указано в комментариях к лету ур вопрос):
import urlparse
found_url = 'http://test.com/All/0.html'
parsed_url = urlparse.urlparse(found_url)
path_parts = parsed_url.path.split("/")
for page_number in range(0,1050,50):
new_path = "{0}/{1}.html".format("/".join(path_parts[:-1]), page_number)
parsed_url = parsed_url._replace(path= new_path)
print parsed_url.geturl()
Выполнение этого сценария даст вам следующее:
http://test.com/All/0.html
http://test.com/All/50.html
http://test.com/All/100.html
http://test.com/All/150.html
http://test.com/All/200.html
http://test.com/All/250.html
http://test.com/All/300.html
http://test.com/All/350.html
http://test.com/All/400.html
http://test.com/All/450.html
http://test.com/All/500.html
http://test.com/All/550.html
http://test.com/All/600.html
http://test.com/All/650.html
http://test.com/All/700.html
http://test.com/All/750.html
http://test.com/All/800.html
http://test.com/All/850.html
http://test.com/All/900.html
http://test.com/All/950.html
http://test.com/All/1000.html
Вместо печати в течение цикла можно использовать значение parsed_url.geturl() в соответствии с вашими потребностями. Как упоминалось выше, если вы хотите получать содержание страницы, вы можете использовать питона requests
модуль следующим образом:
import requests
found_url = 'http://test.com/All/0.html'
parsed_url = urlparse.urlparse(found_url)
path_parts = parsed_url.path.split("/")
for page_number in range(0,1050,50):
new_path = "{0}/{1}.html".format("/".join(path_parts[:-1]), page_number)
parsed_url = parsed_url._replace(path= new_path)
# print parsed_url.geturl()
url = parsed_url.geturl()
try:
r = requests.get(url)
if r.status_code == 200:
with open(str(page_number)+'.html', 'w') as f:
f.write(r.content)
except Exception as e:
print "Error scraping - " + url
print e
Это извлекает содержимое из http://test.com/All/0.html
до http://test.com/All/1000.html
и сохраняет содержимое каждого URL в свой собственный файл , Имя файла на диске будет именем файла в URL-адресе: 0.html
до 1000.html
В зависимости от производительности сайта, который вы пытаетесь очистить от вас, могут возникнуть значительные задержки при запуске скрипта. Если производительность важна, вы можете рассмотреть возможность использования grequests
Да, возможно изменение последней части URL-адреса. – vaultah
спасибо, но как мне это сделать. ive попробовал url.split, но, похоже, он не смог изменить правильную часть URL-адреса. или я могу очистить все в один, а не один за один раз. –
Просто google-версия «python modify url», первая ссылка была [Изменить URL-компоненты в Python 2] (http://stackoverflow.com/q/24200988/2301450). Вы даже можете использовать 'str.rpartition' или' str.split'. Если у вас есть * конкретная * проблема с вашим кодом, укажите код, который вы написали до сих пор, пример ввода (если есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод консоли, трассировка и т. Д.), – vaultah