爬取虎扑步行街论坛数据保存到MySQL、MongoDB

    本文内容围绕获取虎扑步行街论坛上所有帖子的数据开展的,爬取的内容包括帖子名称、帖子链接、作者、作者链接、创建时间、回复数、浏览数、最后回复用户和最后回复时间,将爬取的数据分别保存在MongoDB和MySQL里
网页地址: https://bbs.hupu.com/bxj
在这里插入图片描述
    在运行代码前记得启动MySQL、MongoDB,还需要在MySQL中创建所使用到的库与表
在MySQL中可能将要使用到的命令:
创建mypython这个库

create database mypython;  

使用mypython

use mypython;

在这里插入图片描述

创建数据表hupu

create table hupu(
namevarchar(100) null,
urlvarchar(50) null,
authorvarchar(100) null,
author_hrefvarchar(50) null,
forum_timevarchar(30) null,
reply_countsvarchar(10) null,
browse_countsvarchar(10) null,
endreplynamevarchar(100) null,
endreplytimevarchar(30) null);

在这里插入图片描述

具体python代码如下:

import requests
import time
import pymysql
import pymongo
from lxml import etree#创建连接 默认IP(本机)为localhost,端口号为27017
client = pymongo.MongoClient('localhost', 27017)
# 连接数据库,并创建pythonwork库
mydb = client['pythonwork']#连接表,并创建hupu集合
dataline = mydb['hupu']#连接mysql数据库
conn=pymysql.connect(host='localhost',user='root',passwd='123456',db='mypython',port=3306,charset='utf8')
#光标对象
cursor=conn.cursor()
#请求头
headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}
#获取各页全部文章的链接
def get_href(url):html=requests.get(url,headers=headers)selector=etree.HTML(html.text)hrefs=selector.xpath('//ul/li/div/div[@class="post-title"]/a/@href')for href in hrefs:get_forum("https://bbs.hupu.com"+href)def get_forum(url):html=requests.get(url,headers=headers)result=etree.HTML(html.text)try:name=result.xpath('//*[@id="container"]/div/div[3]/div[2]/div[1]/div/div/div[2]/div/h1/text()')[0]    #获取帖子名author=result.xpath('//*[@id="container"]/div/div[3]/div[2]/div[1]/div/div/div[4]/div/div[1]/div/div[1]/div/a/text()')[0]    #获取作者名author_href=result.xpath('//*[@id="container"]/div/div[3]/div[2]/div[1]/div/div/div[4]/div/div[1]/div/div[1]/div/a/@href')[0]    #获取作者链接forum_time=result.xpath('//*[@id="container"]/div/div[3]/div[2]/div[1]/div/div/div[4]/div/div[1]/div/div[1]/div/span[3]/text()')[0]  #获取创建时间reply_counts=result.xpath('//*[@id="container"]/div/div[3]/div[2]/div[1]/div/div/div[2]/div/span[1]/text()')[0]       #获取回复数browse_counts=result.xpath('//*[@id="container"]/div/div[3]/div[2]/div[1]/div/div/div[2]/div/span[3]/text()')[0]      #获取浏览数#判断回复数是否大于20,若大于20则需要进入最后的回复页面进行爬取if int(reply_counts)>20:#获取回复一共有几页endpage=result.xpath('//ul[@class="hupu-rc-pagination"]/li/a/text()')[-1]#构造回复的最后一页链接endurl=url[:-5]+'-'+endpage+'.html'#爬取最后一页回复信息endhtml=requests.get(endurl,headers=headers)endresult=etree.HTML(endhtml.text)#获取最后回复用户名与时间endreplyname=endresult.xpath('//div[@class="bbs-post-wrapper-content"]/div/div[last()]/div/div[2]/div[1]/div/div[1]/a/text()')[0]endreplytime=endresult.xpath('//div[@class="bbs-post-wrapper-content"]/div/div[last()]/div/div[2]/div[1]/div/div[1]/span/text()')[0]#如果回复总数小于或等于20,那么就可直接在当前页面爬取最后回复者的信息else:endreplyname=result.xpath('//div[@class="bbs-post-wrapper-content"]/div/div[last()]/div/div[2]/div[1]/div/div[1]/a/text()')[0]endreplytime=result.xpath('//div[@class="bbs-post-wrapper-content"]/div/div[last()]/div/div[2]/div[1]/div/div[1]/span/text()')[0]#将爬取的数据存入字典中info={'name':name,'url':url,      #帖子链接'author':author,'author_href':author_href,'forum_time':forum_time,'reply_counts':reply_counts,'browse_counts':browse_counts,'endreplyname':endreplyname,'endreplytime':endreplytime}print('恭喜:该条帖子爬取成功!')#存入mongodbdataline.insert_one(info)#存入mysqlcursor.execute("insert into hupu(name,url,author,author_href,forum_time,reply_counts,browse_counts,endreplyname,endreplytime) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)",(name,url,author,author_href,forum_time,reply_counts,browse_counts,endreplyname,endreplytime))except:passif __name__ == '__main__':urls = ['https://bbs.hupu.com/bxj-{}'.format(str(i)) for i in range(1,11)]for url in urls:get_href(url)time.sleep(1)#统一提交conn.commit()#关闭链接conn.close()

运行成功后控制台部分截图(spyder):
在这里插入图片描述
MySQL中数据展示:
在这里插入图片描述

MongoDB中数据展示:
这里我使用的是mongodb可视化工具Robot 3T,直接去官网下载,傻瓜式安装。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyEclipse导入项目后 js文件报错

当我们把项目导入MyEclipse的时候会发现导入的项目报错,点开一看是js文件报错了,那么我们应该如何处理导入MyEclipse之后js文件报错呢??? 首先,我们要保证我们导入的代码是正确的。 解决js文件报错我总结…

【youcans 的 OpenCV 例程 200 篇】120. 击中-击不中变换

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程 200 篇】120. 击中-击不中变换 形态学的基本思想是利用结构元素测量或提取输入图像中的形状或特征&#…

gets函数会自动加空字符吗_Python高手都知道的内置函数,你不知道就low了

xinxin 菜鸟学Python 阅读本文大概需要5分钟python内置了一些非常巧妙而且强大的内置函数,对初学者来说,一般不怎么用到,我也是用了一段时间python之后才发现,哇还有这么好的函数,这个函数都是经典的而且经过严格测试的…

Tableau2019版本安装步骤

因为需要,所以遍地寻找tableau安装包,然后找到2021等版本,安装发现都不能显示表和图,所以继续寻找,然后发现了2019版安装包,安装发现可以正常使用,以下是安装包的下载地址: 链接&…

HTML全屏背景图

当我们在写前端页面的时候为了页面的美观我们通常会为页面设置图片背景,那么我们如何来设置全屏的背景图呢??? 设置全屏背景图需要三个属性 background-image: url(img/untitled.png);background-repeat: no-repeat;background-s…

【youcans 的 OpenCV 例程200篇】121. 击中-击不中用于特征识别

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程 200 篇】121. 击中-击不中用于特征识别 击中-击不中是形态检测的基本工具,可以实现对象的细…

存储过程双层循环_别出心裁,为锂金属负极贴上“双层保护膜”!

第一作者:Yang Zhao、Maedeh Amirmaleki通讯作者:TobinFilleter、蔡梅、孙学良通讯单位:加拿大多伦多大学、通用汽车研发中心、加拿大西安大略大学研究亮点:1.提出了锂金属负极“双层保护膜”的概念。2.通过ALD/MLD精确控制双层保…

Anaconda安装Wordcloud库失败的解决办法

主要安装出现了如下问题: 当时我也不知道这是出了什么问题,后来我就试试另一个办法安装Wordcloud,因此记录一下: 1、查看自己的Anaconda使用的python版本号 方法:进入Anaconda Prompt,输入python -V 2…

拼图游戏

使用JS制作了一款拼图游戏供大家参考。 原理分析&#xff1a; 1.鼠标的点击和松开事件 2.显示原图作为参考 3.方块的移动替换 4.是否完成拼图的判断 5.完成之后会弹窗提示 效果演示 代码展示 <!DOCTYPE html> <html><head><meta charset"UTF-8&qu…

【youcans 的 OpenCV 例程200篇】122. 形态算法之边界提取

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】122. 形态算法之边界提取 3. 形态学算法 形态学处理的主要应用是提取图像中用来表示和描述形状…

人机协作机器人发展趋势_发那科童梁:机器人化不是时髦!有效的人机协作投资回报率更高...

编者按&#xff1a;此文是根据上海发那科机器人有限公司技术部部长童梁于2019年5月在浙江宁波余姚举行的第六届中国机器人峰会上的《物联网浪潮下的智能制造》报告录音整理摘编部分而成&#xff0c;题目为编者所加。随着“中国制造2025”的不断推进&#xff0c;越来越多制造业企…

做一个关于我和她微信聊天记录的爱心词云图

前言&#xff1a; 因为最近接触到了词云图&#xff0c;所以就想做一个关于和女朋友聊天的词云图,但是现在很少使用QQ了&#xff0c;所以就不得不使用微信导出聊天记录。于是我坐在电脑面前查阅资料查了一天&#xff0c;但是在走到快导出微信聊天记录的时候&#xff0c;还是被…

【youcans 的 OpenCV 例程200篇】123. 形态算法之孔洞填充

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】123. 形态算法之孔洞填充 3. 形态学算法 形态学处理的主要应用是提取图像中用来表示和描述形状…

弹框提示

jquery弹框提示框的实现。 原理分析 1.点击按钮出现弹框 2.设置弹框标题和内容 3.设置取消和确定两个按钮 4.点击确定继续执行 5.点击取消返回此页面 效果演示 原始样式 点击之后 点击确认按钮 代码演示 在开始我们的程序之前注意&#xff1a; 引入Jquery.js架包 <…

el-tooltip位置不灵活_美团研究院:超五成生活服务业商户有灵活用工需求

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;美团研究院于 9 月 15 日发布《生活服务业新就业形态和灵活就业的发展特征和发展趋势》报告&#xff0c;报告指出我国目前灵活用工岗位类型众多&#xff0c;是从业者的重要收入来源&#xff0c;从业者通过灵活就业拓宽了…

【youcans 的 OpenCV 例程200篇】124. 孔洞填充的泛洪算法

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】124. 孔洞填充的泛洪算法 3. 形态学算法 形态学处理的主要应用是提取图像中用来表示和描述形状…

域名可以转让注册人吗_网店可以转让吗?

随着经济市场的快速发展&#xff0c;市场决定需求&#xff0c;所以有很多人紧跟时代&#xff0c;选择了天猫店铺。有一些人想可以不可以购买网店&#xff0c;网店可以转让吗&#xff0c;可以直接经营吗&#xff1f;还有一些人在一同经营之后&#xff0c;或许是业绩不佳或许是有…

java - 菱形输出

程序首先会让你输入一个奇数&#xff0c;即将要生成菱形的总行数&#xff0c;当你输入奇数后按Enter按键就会在控制台看到此菱形了。 效果演示&#xff1a; 代码展示 package com.zsh;import java.util.Scanner;public class lingxing {public static Scanner input new Sc…

MySQL的DDL(数据定义语言)

笔记本 SQL语言一共分为4大类&#xff1a; DQL&#xff08;数据查询语言&#xff09;、 DDL&#xff08;数据定义语言&#xff09;、 DML&#xff08;数据操纵语言&#xff09;、 DCL &#xff08;数据控制语言&#xff09; 本文就介绍的是其中的DDL&#xff08;Data D…

【youcans 的 OpenCV 例程200篇】125. 形态算法之提取连通分量

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】125. 形态算法之提取连通分量 3. 形态学算法 形态学处理的主要应用是提取图像中用来表示和描述…