【python爬虫专项(18)】基于爬虫的MongoDB的应用(将爬取的数据存入到数据库)

之前在去哪儿网采集的景点数据,添加函数将数据存入mongo

函数:get_data(ui,d_h,d_c,table) → 【数据采集及mongo入库】
        ui:数据信息网页
        d_h:user-agent信息
        d_c:cookies信息
        table:mongo集合对象
        结果:每采集一条数据,存入mongo数据库

全部代码:
主要是针对于get_data()函数里面的部分代码进行修改,按一条条数据写入数据库的方式运行代码,当然在处理之前需要先导入pymongo和预先设置好储存数据的地方,最后为了可视化输出和保证程序正常运行。可以加上数据采集和储存的进度情况以及异常判断的操作

import requests 
from bs4 import BeautifulSoup
import pandas as pd
import pymongo

def get_url(n):
	'''
	【分页网址url采集】函数
	n:页数参数
	结果:得到一个分页网页的list
	'''
	lst = []
	for i in range(n):
		ui = "https://travel.qunar.com/p-cs299878-shanghai-jingdian-1-{}".format(i+1)
		lst.append(ui)
	return lst

def get_data(ui,d_h,d_c,table):  
	'''
	【数据采集及mongo入库】
	ui:数据信息网页
	d_h:user-agent信息
	d_c:cookies信息
	结果:得到数据的list,每条数据用dict存储
	'''
	ri = requests.get(ui, headers= dic_heders, cookies = dic_cookies)
	soup_i = BeautifulSoup(ri.text,'lxml')
	ul = soup_i.find("ul",class_="list_item clrfix")
	lis = ul.find_all('li')
	
	#这里删除了添加到列表的操作,直接将生成的字典添加到mongo,同时增加了计数
	n = 0
	for li in lis:
		dic = {}
		dic['景点名称'] = li.find('span',class_="cn_tit").text
		dic['攻略数量'] = li.find('div',class_="strategy_sum").text
		dic['评分'] = li.find('span',class_="total_star").span['style']
		dic['简介'] = li.find('div',class_="desbox").text
		dic['排名'] = li.find('span',class_="ranking_sum").text
		dic['经度'] = li['data-lng']
		dic['纬度'] = li['data-lat']
		dic['点评数量'] = li.find('div',class_="comment_sum").text
		dic['多少驴友来过'] = li.find('span',class_="comment_sum").span.text
		table.insert_one(dic)
		n += 1
	return n


if __name__ == "__main__":

	dic_heders = {
	   'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
	}

	dic_cookies = {}
	cookies = 'QN1=dXrgj14+tmYQhFxKE9ekAg==; QN205=organic; QN277=organic; QN269=506F28C14A7611EAA0BEFA163E244083; _i=RBTKSRDqFhTQT5KRlx-P1H78agxx; fid=7cc3c3d9-3f6c-45e1-8cef-3384cd5da577; Hm_lvt_c56a2b5278263aa647778d304009eafc=1581168271,1581220912; viewpoi=7564992|709275; viewdist=299878-7; uld=1-299878-8-1581221233|1-1062172-1-1581168529; QN267=1679639433d5aedfc8; Hm_lpvt_c56a2b5278263aa647778d304009eafc=1581221236; QN25=cb06bfbd-d687-4072-98c5-73266b637a6a-9f992f90; QN42=nvxp8441; _q=U.qunar_lbs_428305502; _t=26463150; csrfToken=oXYBnhSoGAGxggRkzmAjbxxGrpgsjUqQ; _s=s_ZBWFJO3EEGZISWS35EBIS5NQYA; _v=YTRjW_H5L47nGNVabvTLt1mlh7j8R7t4UNDVRrJUz0wScfLMWgSvkwQbzMLHlFbsvTU-2kJrBK74NUyOi3MX_3obY94Hhhugt8bv8ILxwsWDv4s_ANNiM8qRdg6HlBrrCEnGYr8lxS9uv78zDCNKz9pFbN8JPYy-AKJP6xILIsT7; _vi=4ONQzvfOOhwJECN5R-4rfWZDzlQ5-qv2xi_jsp1INPEpy9iKHa5gV0gHc35fDfTDe3TjcKteU7ZWk1vd6MsIqTfXYyUh3gTwZJ_9z3PEpkXZReeeIjaVE4HwLTkOATLIzIxg92s-QCWKE1RdNlaZsxPnfN7NHPGAZz5rsmxvpNDY; QN44=qunar_lbs_428305502; QN48=tc_a7fe4861b2d918df_17028369fc8_67ab; QN271=1749d44a-1a11-4886-be27-c3e3bfdadb0c'
	cookies_lst = cookies.split("; ")
	for i in cookies_lst:
		dic_cookies[i.split("=")[0]] = i.split("=")[1]    

	#导入数据库,并分配数据存储位置
	myclient = pymongo.MongoClient("mongodb://localhost:27017/")
	db = myclient['去哪儿网数据']
	datatable = db['data']
	
	urllst = get_url(10)

	errorlst =[]
	count = 0
	for u in urllst:
		try:
			count += get_data(u,dic_heders,dic_cookies,datatable)
			print('数据采集并存入成功,总共采集{}条数据'.format(count))
		except:
			errorlst.append(u)
			print('数据采集失败,数据网址为:',u)			

程序运行结果如下:
在这里插入图片描述
至此就把爬虫所获得的数据全部存储到了MongoDB里面了

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Python可以使用pymongo库来连接MongoDB数据库,并使用requests和BeautifulSoup库来爬取数据。以下是一个简单的示例代码,演示如何将爬取到的数据存储到MongoDB数据库中: ```python import requests from bs4 import BeautifulSoup import pymongo # 连接MongoDB数据库 client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['mydatabase'] collection = db['mycollection'] # 爬取数据 url = 'https://www.example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') data = {'title': soup.title.string, 'content': soup.get_text()} # 将数据存储到MongoDB数据库中 collection.insert_one(data) ``` 在上面的代码中,我们首先使用pymongo库连接到MongoDB数据库。然后,我们使用requests和BeautifulSoup库来爬取数据,并将数据存储到一个字典中。最后,我们使用insert_one()方法将数据插入到MongoDB数据库中。 当然,这只是一个简单的示例代码,实际上,爬取数据和存储数据的过程可能会更加复杂。但是,使用PythonMongoDB,您可以轻松地实现数据爬取和存储。 ### 回答2: Python是一种高级编程语言,具有强大的网络爬虫能力。要将爬取数据存入MongoDB数据库,我们可以按照以下步骤操作: 1. 导入所需库: 首先要导入`pymongo`库,这是一个Python操作MongoDB数据库的工具包。 2. 连接MongoDB数据库: 在代码中使用`pymongo.MongoClient()`方法连接MongoDB数据库。你需要指定要连接的主机和端口,例如`client = pymongo.MongoClient("localhost", 27017)`。 3. 创建数据库和集合: 如果你的MongoDB中还没有相应的数据库和集合,可以使用`client['数据库名称']`创建数据库,并使用`数据库名称['集合名称']`语法创建集合。 4. 爬取数据: 使用Python中的网络爬虫库(例如`requests`或`beautifulsoup`)编写爬取数据的代码。你可以使用URL或其他方法获取数据。 5. 数据处理: 爬取到的数据可能需要进行一些处理,比如提取特定字段、转换数据类型等。 6. 存入MongoDB: 使用`集合名称.insert_one()`或`集合名称.insert_many()`方法将处理后的数据存入MongoDB数据库。你可以将数据作为字典或列表传递给这些方法。 7. 关闭连接: 在完成数据存入操作后,使用`client.close()`方法关闭与MongoDB数据库的连接。 通过按照以上步骤操作,你可以使用Python爬取数据,并将处理后的数据存入MongoDB数据库。这样做可以方便地管理和查询数据,同时还能保持数据的完整性。 ### 回答3: Python是一种广泛应用数据处理和网络爬虫的编程语言,而MongoDB是一种面向文档的NoSQL数据库。使用Python进行数据爬取并将数据存入MongoDB是一项常见的任务。下面是一个简单的使用Python爬取数据存入MongoDB的过程。 首先,我们需要安装Python的相关库,包括`pymongo`和`beautifulsoup4`。`pymongo`是PythonMongoDB交互的库,`beautifulsoup4`是用于解析HTML网页的库。 接下来,我们需要创建一个MongoDB的连接。我们可以使用如下代码: ```python from pymongo import MongoClient client = MongoClient() db = client['database_name'] collection = db['collection_name'] ``` 在这里,我们创建了一个名为`database_name`的数据库,并在其中创建了一个名为`collection_name`的集合。 然后,我们可以使用`beautifulsoup4`库来解析HTML网页,获取我们需要的数据。以爬取一个网页的标题为例,我们可以使用如下代码: ```python import requests from bs4 import BeautifulSoup url = 'https://www.example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') title = soup.title.text ``` 在这里,我们使用`requests`库获取网页的内容,并使用`BeautifulSoup`进行解析。然后,我们可以使用`soup.title.text`获取网页的标题。 最后,我们可以将获取到的数据存入MongoDB中。我们可以使用如下代码: ```python data = { 'title': title, } collection.insert_one(data) ``` 在这里,我们创建了一个`data`字典,包含了我们想要存入数据。然后,我们使用`insert_one`方法将数据插入到MongoDB中。 总结一下,我们可以使用Python的`pymongo`和`beautifulsoup4`库,爬取数据并将其存入MongoDB。首先,我们创建一个MongoDB的连接。然后,我们使用`requests`和`beautifulsoup4`库获取网页的内容和解析HTML。最后,我们使用`insert_one`方法将数据存入MongoDB
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值