如何使用美丽的汤上载爬行数据,并在Python的Azure Blob存储中上传



我正在从URL中爬行数据,并使用美丽的汤爬行。我想将这些爬行的数据存储到Azure Blob存储中,作为斑点。下面是我的代码在我的本地保存数据时,我想直接上传到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

此代码成功地将网站的数据保存在我的本地文件夹中,请帮助我直接将同一网站的数据直接保存在Azure Blob存储中。我在Azure Blob存储中有钥匙和帐户。

soup=BeautifulSoup(urlopen('www.abc.html'))
data = soup.encode("ascii","ignore")        
block_blob_service.create_blob_from_text('containername', 'filename.txt', data)

我正在尝试上述代码,但它不起作用。

没有任何信息显示哪种版本的BeautifulSoup和方法urlopen来自python 2中的urlliburllib2urllib3您正在使用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)

即使我用urllib替换CC_11,data类型是str。因此,我认为您可以尝试使用StringIO&amp;block_blob_service.create_blob_from_stream用于您的代码,如下所示。

from StringIO import StringIO
block_blob_service.create_blob_from_stream('mycontainer', 'filename2.txt', StringIO(data))

它也对我有用。

希望它有帮助。

最新更新