今天就带大家从头到尾一步一步带着大家爬取虎扑论坛帖子的数据,里面涉及到的一些知识,我会给出学习的连接,大家可以自行去学习查看。

前期准备

首先我们打开虎扑NBA论坛,我选择的是湖人专区(小湖迷一个)。虎扑湖人专区
我们需要爬取的数据有这些

好了 每一个小帖子我们需要爬取图中的这七个数据,接下来我们利用浏览器的开发者模型,查看我们需要的东西。

我举个例子:
首先打开浏览器的开发者模式,谷歌浏览器快捷键是F12

点击蓝色方框内的小箭头,点击后放在帖子主题上我们会定位到该主题所在的前端位置。


右侧蓝框内就是左边主题所在的位置,我们可以看到,这个主题是在 a 标签内部 同时又被b标签包括着。
这里,咱们需要注意一下,因为论坛的第一条帖子主题是加粗的,其他的帖子并没有加粗。
好了 我们可以将这条信息 写为 【帖子主题 |a class_truetit】

接着就是按照相同的套路获取剩下六条数据了,这里我直接把这七条数据进行汇总,大家也可以一个一个按照上面的方法进行一一查找比对。

名字 数据
帖子主题 a class_truetit
作者 a class_aulink
创贴时间 div class_author box
回复数 span class_ansour box
浏览数 span class_ansour box
最后回复的人 span class_endauthor
最后回复时间 div class_endreplay box

好了,前期准备工作完成了 ,接下来咱们开始写爬虫了。

开始写爬虫

首先需要导入pymongo、requests、BeautifulSoup 这三个模块

import pymongo
import requests
from bs4 import BeautifulSoup

这里需要你简单的掌握BeautifulSoup的用法,具体教程BeautifulSoup4.0基础

pymongo 这个模块是用来连接MongoDB数据库的模块。具体用法见链接MongoDB数据库教程

首先写一个数据库连接的方法

def mongoconne():client = pymongo.MongoClient("mongodb://localhost:27017/")//数据库连接mydb = client["runoodbd"]//进入到该数据库,如果不存在就创建mycol = mydb["HUPU"]//进入到该表,如果没有就创建return mycol

接下来写数据库插入函数

def insertmongo(mycol,title,author,starttime,replaynumber,browsenumber,endauthors,endreplaytimes):mydict = {"title":"title","author":"author","starttime":"starttime","replaynumber":"replaynumber","browsenumber":"browsenumber","endauthors":"endauthors","endreplaytimes":"endreplaytimes"}mydict["title"]=titlemydict["author"]=authormydict["starttime"]=starttimemydict["replaynumber"]=replaynumbermydict["browsenumber"]=browsenumbermydict["endauthors"]=endauthorsmydict["endreplaytimes"]=endreplaytimesmycol.insert_one(mydict)

这里我写的比较麻烦,但是理解起来比较容易。方法参数分别为上一个数据库连接函数返回的参数,还有七个帖子数据。首先初始化一个mydict 字典,然后给对应的key赋值相应的value。这个字典的初始化也可以写成下面这种形式

message = ('title','author','starttime','replaynumber','browsenumber','endauthors','endreplaytimes')//很显然,这是一个元组
mydict = mydict.fromkeys(message)
print(str(mydict))
输出结果是:
{'title': None, 'author': None, 'starttime': None,'replaynumber': None,'browsenumber': None,'endauthors': None,'endreplaytimes': None}

字典 fromkeys() 方法

接下来开始获取帖子数据

def findallmess(link,number):titleset=[]authorset=[]starttimeset=[]replaynumberset=[]browsenumberset=[]endauthorset=[]endreplaytimeset=[]link = link+str(number)re = requests.get(link)soup = BeautifulSoup(re.text,"lxml")print(re.text)titles = soup.findAll('a',class_='truetit')#.b.textauthors = soup.findAll('a',class_='aulink')#textstarttimes = soup.findAll('div',class_='author box')#text.a.find_next_sibling("a")replaynumbers = soup.findAll('span',class_='ansour box')#text.split("/")  [0].strip()browsenumber = replaynumber[1].strip()endauthors = soup.findAll('span',class_="endauthor")#textendreplaytimes = soup.findAll('div',class_="endreply box")#text .afor title in titles:#print(title.text)titleset.append(title.text)for author in authors:authorset.append(author.text)for starttime in starttimes:starttimeset.append(starttime.a.find_next_sibling("a").text)for replaynumber in replaynumbers:replaynumberset.append(replaynumber.text.split("/")[0].strip())browsenumberset.append(replaynumber.text.split("/")[1].strip())for endauthor in endauthors:endauthorset.append(endauthor.text)for endreplaytime in endreplaytimes:endreplaytimeset.append(endreplaytime.a.text)

整体思路就是为每一个数据创建一个集合用于存储数据,然后通过soup.findAll()方法获取本页面所有的特定信息,返回值是集合形式。然后通过for循环对集合里面的每一个元素进行处理,添加到我们事先初始化的集合里。里面可能会涉及到一些数据的处理,不懂的同学可以百度搜一下,说的很明白的。

总结

目前的爬虫就是将当前连接页面下载下来,然后通过解析和查询方法,找到我们需要的数据,然后存入到数据库中。后续,我们会继续学习如何进行免登录,查找ajax返回的数据,以及学习自动化爬虫框架。

如果还有不明白的地方,欢迎大家浏览,全部代码我会上传到Github上。
代码地址

python爬虫爬取虎扑湖人论坛专区帖子数据,并存入MongoDB数据库中相关推荐

  1. 利用python爬虫抓取虎扑PUBG论坛帖子并制作词云图

    作为一个PUBG迷,刷论坛是每天必不可少的事,上面有很多技术贴和职业比赛的帖子,突发奇想,想知道论坛里谈论最多的是什么,便做了一个爬虫爬取了论坛上最新的帖子标题和部分回复,然后利用jieba与word ...

  2. 爬取虎扑网站上NBA球员数据信息

    爬虫案例的一般步骤 1.确定url地址(网页分析)爬虫程序就完成了一半 2.发送网络请求 requests(js\html\css) 3.数据解析(筛选数据) 4.保存数据(本地文件\数据库) 本次爬 ...

  3. Python爬取起点小说并保存到本地文件夹和MongoDB数据库中

    Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...

  4. [python 爬虫]Python爬虫抓取虎扑论坛帖子图片

    自从可以实现抓取文字了,自然要尝试更多的类型,比如图片.我是一个有逛虎扑论坛习惯的人,经常会发现有些帖子的图片挺好看的想保存下来,但是如果人为保存的话,一个帖子至少都有二三十张,这将是一个庞大的工作量 ...

  5. python爬虫爬取虎扑步行街爆照区图片

    开始动手的时候毫无头绪,主要借鉴了以下帖子: https://blog.csdn.net/sinat_28797501/article/details/70195443 但是后来发现代码中还是有一些不 ...

  6. 上手快!!福利局!新手如何使用python爬虫爬取网页图片(使用正则进行数据解析)当然这个新手是我自己

    作为一个python新入门小白,突然就想发个博客,一方面为了记录学习历程,一方面能分享给新入门的同学经验,更多的是想和大家一起学习和交流.以下是我以小白的角度分享的爬虫的相关知识和一个简单的爬取网页图 ...

  7. python爬虫 爬取淘宝搜索页面商品信息数据

    主要使用的库: requests:爬虫请求并获取源码 re:使用正则表达式提取数据 json:使用JSON提取数据 pandas:使用pandans存储数据 以下是源代码: #!coding=utf- ...

  8. python爬虫爬取彩票中奖数字,简单计算概率并写入Excel文件中

    一.爬取网页数据所使用到的库 1.获取网络请求requests.BeautifulSoup2.写入excel文件openpyxl.pprint.column_index_from_string注意co ...

  9. 爬虫爬取黑马程序员论坛的网页数据

    #引入requests库 import requests #根据url发起请求,获取服务器响应文件 url:待抓取的url def load_page(url):#这里的请求头header可以是任意一 ...

最新文章

  1. 可持久化普通线段树 ---- P2839 [国家集训队]middle 可持久化普通线段树 + 二分 求中位数最大值
  2. go gdb调试 参数设置 减小执行文件体积
  3. [BZOJ4553][TJOI2016HEOI2016]序列(CDQ分治)
  4. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
  5. 算法设计:动态规划问题
  6. kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
  7. Confluence 6 匿名用户
  8. 【报告分享】2020中国基民图鉴.pdf(附下载链接)
  9. 施乐悄悄修复影响某些打印机中的严重缺陷
  10. FinSpy 发布 Mac 和 Linux OS 版本攻击埃及组织机构
  11. 那智机器人工具坐标设置方法
  12. 求助!KeyError:None of [Index(['2017-01-01, ...\n dtype='object', length=365)] are in the [columns]
  13. 字节跳动资深面试官亲述:15个经典面试问题及回答思路,知乎上转疯了!
  14. C#使用selenium写爬虫提高速度的关键
  15. syswow64删除文件_syswow64是什么文件夹?syswow64可以删除吗
  16. PL/SQL Developer使用技巧
  17. Java多态(面试考点,不要因为基础而忽视)
  18. 2017物流数据报告
  19. 如何在中国制造网(made-in-china)上做生意
  20. webpack将部分图片打包后转化为base64

热门文章

  1. springboot+vue+Elementui高校教师人事档案管理系统
  2. ssm基于java的轻院人事档案管理系统毕业设计源码271611
  3. OpenStack Mistral Workflow
  4. svn服务器 无线访问权限,SVN 服务器端权限管理
  5. 空调一二三级能效区别
  6. PC机如何使用trunk口类型连接
  7. for循环自我理解感悟
  8. NC:你觉得你吃的是草,其实你还是吃的土
  9. Gitee.io 博客开通了
  10. 关于我向国内作者发邮件要数据集的这件事,记录一下