Как загрузить данные сканирования, используя красивый суп, в AZURE BLOB STORAGE на python?
Я сканирую данные с URL-адреса и сканирую, используя красивый суп. Я хочу сохранить полученные данные в хранилище BLOB-объектов AZURE в виде большого двоичного объекта. ниже приведен мой код при сохранении данных на локальном компьютере, то же самое, что я хочу выполнить для прямой загрузки в Azure.
soup = BeautifulSoup(urlopen('www.abc.html'))
outfile = open('C:\\Users\\ADMIN\\filename.txt','w')
data = soup.encode("ascii","ignore")
outfile.write(data)
outfile.close
Этот код успешно сохраняет данные веб-сайта в моей локальной папке, пожалуйста, помогите мне сохранить данные того же веб-сайта непосредственно в хранилище BLOB-объектов Azure. У меня есть ключ и учетная запись в AZURE BLOB STORAGE.
soup=BeautifulSoup(urlopen('www.abc.html'))
data = soup.encode("ascii","ignore")
block_blob_service.create_blob_from_text('containername', 'filename.txt', data)
Я пытаюсь выше кусок кода, но он не работает.
1 ответ
Там нет никакой информации, которая показывает, какая версия BeautifulSoup
и метод urlopen
происходит от urllib
или же urllib2
или же urllib3
в Python 2. Просто в соответствии с вашим кодом и исходя из моего опыта, я думаю, что вы использовали BeautifulSoup4
с urllib2
и я попытался воспроизвести ваш вопрос о data
тип не str
, но не удалось, потому что мой код ниже работает.
Вот мой пример кода.
from bs4 import BeautifulSoup
import urllib2
soup = BeautifulSoup(urllib2.urlopen("http://bing.com"))
data = soup.encode("ascii","ignore")
print type(data) # It's <type 'str'> here
from azure.storage.blob.blockblobservice import BlockBlobService
block_blob_service = BlockBlobService(account_name='<your-account-name>', account_key='<your-account-key>')
block_blob_service.create_container('mycontainer')
block_blob_service.create_blob_from_text('mycontainer1', 'filename.txt', data)
Даже я заменил urllib2
с urllib
, data
тип str
, Поэтому я думаю, что вы можете попытаться использовать StringIO
& block_blob_service.create_blob_from_stream
для вашего кода, как показано ниже.
from StringIO import StringIO
block_blob_service.create_blob_from_stream('mycontainer', 'filename2.txt', StringIO(data))
Это также работает для меня.
Надеюсь, поможет.