龙空技术网

七爪源码:使用 Python 抓取将来自 Internet 的信息存储在 Firebase..

庄志炎 224

前言:

此刻各位老铁们对“python数据抓取代码”都比较看重,姐妹们都想要知道一些“python数据抓取代码”的相关内容。那么小编在网摘上收集了一些关于“python数据抓取代码””的相关文章,希望看官们能喜欢,咱们快快来了解一下吧!

使用 Python 抓取将来自 Internet 的信息存储在 Firebase 数据库中。

网页抓取是一种程序员可以使用代码从网站收集信息的方法。 Python 通常用于此目的,因为它有一个专门为网页抓取而制作的强大库。

在本文中,您将学习如何使用简单的网络抓取来获取信息,然后将信息存储在 Firebase 数据库中。

设置我的环境

对于我的 IDE,我使用的是 PyCharm,但是任何安装了 python 的 IDE 都可以使用。 在 PyCharm 中创建项目时,它提供了允许程序继承全局包的选项。 如果某人已经安装了部分或全部所需的 Python 模块,则应选择此选项。

之后,在弹出菜单中选择项目设置。

接下来,转到服务帐户

之后,选择 python 选项,然后生成新的私钥。

下载密钥并将其导入您正在使用的目录中。我只需将其拖放到我正在使用的文件夹中即可。 我将包含私钥的文件夹重命名为 credentials.json。 这个密钥是使 firebase 数据库安全的原因,因此如果您要上传到 GitHub,请务必创建一个“.gitignore”文件来告诉 git 忽略 credentials.json。 这可以如下所示完成。

导入模块

为了使用我们刚刚安装的模块,我们必须将它们导入到代码中。 这可以通过运行下面的代码来完成。

import firebase_adminfrom firebase_admin import credentialsfrom firebase_admin import firestorefrom firebase import firebasefrom requests_html import HTMLSession

将您的代码连接到 Firebase

为了在 python 中连接到 firebase,您可以复制下面的代码。 我将我的私钥重命名为“credentials.json”,因此在我的代码中有credentials.json 的地方,您可以用您命名的密钥替换。 在下面的链接中,请务必将 <nameofyourproject> 替换为您在 firebase 中为项目命名的任何名称。

cred = credentials.Certificate('credentials.json')firebase_admin.initialize_app(cred)db=firestore.client()firebase = firebase.FirebaseApplication(';nameofyourproject>.firebaseio.com', None)

到目前为止,我的完整代码如下所示

导入模块

为了使用我们刚刚安装的模块,我们必须将它们导入到代码中。 这可以通过运行下面的代码来完成。

import firebase_adminfrom firebase_admin import credentialsfrom firebase_admin import firestorefrom firebase import firebasefrom requests_html import HTMLSession

将您的代码连接到 Firebase

为了在 python 中连接到 firebase,您可以复制下面的代码。 我将我的私钥重命名为“credentials.json”,因此在我的代码中有credentials.json 的地方,您可以用您命名的密钥替换。 在下面的链接中,请务必将 <nameofyourproject> 替换为您在 firebase 中为项目命名的任何名称。

cred = credentials.Certificate('credentials.json')firebase_admin.initialize_app(cred)db=firestore.client()firebase = firebase.FirebaseApplication(';nameofyourproject>.firebaseio.com', None)

So far, my full code looks as follows

def create():    #allows the user to input a url    url = input('Please enter the URL of the site you would like to    obtain information from: ')#connects with that url    session = HTMLSession()    response = session.get(url)

为了从传递到程序中的 URL 中选择特定信息,可以运行下面的代码。

#methods to scrape the internettitle = response.html.find('title', first=True).textdescription = response.html.xpath("//meta[@name='description']/@content")canonical = response.html.xpath("//link[@rel='canonical']/@href")author = response.html.xpath("//meta[@name='author']/@content")image = response.html.xpath("//meta[@property='og:image']/@content")

需要创建将添加信息的集合和文档。 您可以使用从 URL 获取的信息来命名集合和文档,也可以允许用户命名它们。 在我的代码中,我已经完成了这两项操作,允许用户命名集合并使用标题作为文档的名称。

下面的代码将允许用户命名集合并将从互联网上抓取的信息作为对象添加到 Firebase 数据库。

# lets the user to input the name of a collectioncollectName=input("Please enter the name of the collection you would like to create. \n")#adds to firebase as an objectdb.collection(collectName).document(title).set(    {'Title': title,     'Author': author,     'Description': description,     'Image': image,     'Canonical link': canonical     })

我的完整代码如下所示:(作为一个快速注释,将我的代码复制并粘贴到这个站点已经弄乱了缩进,所以一定要遵循 python 所需的正确缩进程序。)

#importing packages to be used laterimport firebase_adminfrom firebase_admin import credentialsfrom firebase_admin import firestorefrom firebase import firebasefrom requests_html import HTMLSession#connects to a firebase databasecred = credentials.Certificate('credentials.json')firebase_admin.initialize_app(cred)db=firestore.client()firebase = firebase.FirebaseApplication(';, None)#function to scrape a url and add the information to a firebase databasedef create():    #allows the user to input a url    url = input('Please enter the URL of the site you would like to          obtain information from: ')    session = HTMLSession()    response = session.get(url)    #methods to scrape the internet    title = response.html.find('title', first=True).text    description =  response.html.xpath("//meta[@name='description']/@content")    canonical = response.html.xpath("//link[@rel='canonical']/@href")    author = response.html.xpath("//meta[@name='author']/@content")    image = response.html.xpath("//meta[@property='og:image']/@content")    # lets the user to input the name of a collection    collectName=input("Please enter the name of the collection you would like to create. \n")    #adds to firebase as an object    db.collection(collectName).document(title).set(        {'Title': title,         'Author': author,         'Description': description,         'Image': image,         'Canonical link': canonical         }    )

关注七爪网,获取更多APP/小程序/网站源码资源!

标签: #python数据抓取代码