我正在从 URL 抓取数据并使用 beautiful soup 进行抓取。我想将爬网数据作为 blob 存储到 AZURE BLOB STORAGE 中。下面是我在本地保存数据时的代码,我想执行相同的操作来直接上传到 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 STORAGE 中有 key 和帐户。
soup=BeautifulSoup(urlopen('www.abc.html'))
data = soup.encode("ascii","ignore")
block_blob_service.create_blob_from_text('containername', 'filename.txt', data)
我正在尝试上面的代码,但它不起作用。
最佳答案
没有任何信息显示 BeautifulSoup
的版本以及 urlopen
方法来自 urllib
或 urllib2
> 或 Python 2 中的 urllib3
。根据您的代码,根据我的经验,我认为您将 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
替换了 urllib2
,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))
它也适合我。
希望有帮助。
关于python - 如何使用 beautiful soup 将爬取数据上传到 python 中的 AZURE BLOB STORAGE 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45957408/