2015-03-02 3 views
1

Я разбираю контент из Интернета, а затем сохраняю его в файл. Пока я вручную создаю имя файла.Автоматизация генерации имени файла из текста url

Вот мой код:

import requests 
url = "http://rads.stackoverflow.com/amzn/click/1593271840" 
html = requests.get(url).text.encode('utf-8') 
with open("html_output_test.html", "wb") as file: 
file.write(html) 

Как я мог бы автоматизировать процесс создания и сохранения следующего HTML файла из URL:

The-Google-Way-Революционные-менеджмент (вместо html_output_test ?

Это название происходит от оригинального книжного магазина URL, который я отправил и что, вероятно, был изменен, чтобы избежать ADV продукта.

Спасибо!

+0

какое имя вы хотите использовать? –

+0

Привет @PadraicCunningham «The-Google-Way-Revolutionizing-Management», который является частью исходного URL-адреса. – Diego

+0

То есть название Diego, я добавил ответ –

ответ

2

Вы можете использовать BeautifulSoup, чтобы получить текст заголовка на странице, я позволил бы запросы обрабатывать кодирование с .content:

url = "http://rads.stackoverflow.com/amzn/click/1593271840" 
html = requests.get(url).content 
from bs4 import BeautifulSoup 

print(BeautifulSoup(html).title.text) 
with open("{}.html".format(BeautifulSoup(html).title.text), "wb") as file: 
    file.write(html) 

The Google Way: How One Company is Revolutionizing Management As We Know It: Bernard Girard: 9781593271848: Amazon.com: Books 

Для этой конкретной страницы, если вы просто хотите Путь Google: Как один Компания Революционные управления, как мы знаем название продукта в class a-size-large:

text = BeautifulSoup(html).find("span",attrs={"class":"a-size-large"}).text 
with open("{}.html".format(text), "wb") as file: 
    file.write(html) 

связь с The-Google-Way-революционизирующее-менеджмент в теге ссылки:

link = BeautifulSoup(html).find("link",attrs={"rel":"canonical"}) 
print(link["href"]) 

http://www.amazon.com/The-Google-Way-Revolutionizing-Management/dp/1593271840 

Так, чтобы получить ту часть, что вам нужно разобрать его:

print(link["href"].split("/")[3]) 
The-Google-Way-Revolutionizing-Management 

link = BeautifulSoup(html).find("link",attrs={"rel":"canonical"}) 
with open("{}.html".format(link["href"].split("/")[3]),"wb") as file: 
    file.write(html) 
+0

Спасибо за ответ @PadraicCunningham! Я получаю следующую ошибку: IOError: [Errno 22] неверный режим ('wb') или имя файла: ... 'book title'. Я думаю, что это связано с использованием: в окнах для имен файлов. – Diego

+0

Не существует способа получить имя из самого URL-адреса, похоже, это будет более короткое имя? – Diego

+0

Вам не нужно 'wb' просто использовать' w' –

0

можно разобрать на веб-страницу, используя красивый суп, получить на странице, то slugify его и использовать в качестве имени файла или создать произвольное имя файла, что-то вроде os.tmpfile.

Смежные вопросы