严正声明:爬虫仅用于学习研究,不做商业或者其它非法用途!

首先我们要爬取的网页地址为:https://bbs.hupu.com/bxj

页面的样子是这样的:

红色圈出来的部分就是我们所要爬取的内容信息。

接下来最重要的自然是页面元素的分析,这个就不多说了,这是爬虫代码编写的前提,也是最最基本、最最重要的部分。

简单的来说就是 右键想要爬取的内容,选择“检查”。需要大家了解一点html简单的入门知识就好了。

好了,话不多说,先上第一版代码,没有连接数据库,只是输出,这样也是为了保证数据在存入数据库之前是准确的。

#_*_ coding=UTF-8 _*_
import requests
from bs4 import BeautifulSoupheaders={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'}
link='https://bbs.hupu.com/bxj'
re=requests.get(link,headers=headers)
soup=BeautifulSoup(re.content,'lxml')
soup_list=soup.find('ul',class_='for-list')li_list=soup_list.find_all('li')
for lli in li_list:title=lli.find('div',class_='titlelink box')print('标    题:'+title.a.string)#重点:NavigableString对象获取文本内容的方法print('标题链接:'+"https://bbs.hupu.com"+title.a['href'])#重点:获取标签内链接的方法author=lli.find('div',class_='author box')print('作    者:'+author.a.string)print('发布时间:'+author.contents[5].string)reply_view=lli.find('span',class_='ansour box')reply_view=reply_view.text.strip().split('/')#重点:对形如23/34这样的字符串进行分割print('回    复:'+reply_view[0].strip())#strip()不可省略,否则会有空格print('浏    览:'+reply_view[1].strip())endreply=lli.find('div',class_='endreply box')print('最后回复时间:'+endreply.a.string)print('最后回复链接:'+"https://bbs.hupu.com/"+endreply.a['href'])print('最后回复人  :'+endreply.span.string)print()

接下来就是连接MongoDB数据库,它有一个好处就是我们不需要提前建立数据库以及表,当我们需要使用的数据库不存在时,它会主动建立,但是这里也要注意避免已有数据库的冲突。所以一般情况下,在数据插入之前最好先做检查。

上代码:

#_*_ coding=UTF-8 _*_
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClientclient=MongoClient('localhost',27017)#建立客户端对象
hupu=client.hupu#链接数据库hupu,没有则自动建立
post=hupu.post#使用post集合,没有则自动建立headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'}
link='https://bbs.hupu.com/bxj'
re=requests.get(link,headers=headers)
soup=BeautifulSoup(re.content,'lxml')
soup_list=soup.find('ul',class_='for-list')li_list=soup_list.find_all('li')
for lli in li_list:title=lli.find('div',class_='titlelink box')print('标    题:'+title.a.string)#重点:NavigableString对象获取文本内容的方法print('标题链接:'+"https://bbs.hupu.com"+title.a['href'])#重点:获取标签内链接的方法author=lli.find('div',class_='author box')print('作    者:'+author.a.string)print('发布时间:'+author.contents[5].string)reply_view=lli.find('span',class_='ansour box')reply_view=reply_view.text.strip().split('/')#重点:对形如23/34这样的字符串进行分割print('回    复:'+reply_view[0].strip())#strip()不可省略,否则会有空格print('浏    览:'+reply_view[1].strip())endreply=lli.find('div',class_='endreply box')print('最后回复时间:'+endreply.a.string)print('最后回复链接:'+"https://bbs.hupu.com/"+endreply.a['href'])print('最后回复人  :'+endreply.span.string)print()post.insert_one({'标题':title.a.string,'标题链接':"https://bbs.hupu.com"+title.a['href'],'作    者':author.a.string,'发布时间':author.contents[5].string,'回    复':reply_view[0].strip(),'浏    览':reply_view[1].strip(),'最后回复时间':endreply.a.string,'最后回复链接':"https://bbs.hupu.com/"+endreply.a['href'],'最后回复人':endreply.span.string})

这样我们就大功告成了,注意代码部分的注释是一些容易被忽视却很常用的重点。

比如:

print('标    题:'+title.a.string)#重点:NavigableString对象获取文本内容的方法

print('标题链接:'+"https://bbs.hupu.com"+title.a['href'])#重点:获取标签内链接的方法

reply_view=reply_view.text.strip().split('/')#重点:对形如23/34这样的字符串进行分割

现在我们来到数据库,查询一下我们的内容:

数据已经被正确的出入进去了。

【Python爬虫练习】虎扑社区步行街版块首页信息爬取(BeautifulSoup+MongoDB)相关推荐

  1. Python爬虫系列之MeiTuan网页美食版块商家数据爬取

    Python爬虫系列之MeiTuan网页美食版块商家数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代 ...

  2. Python3 爬虫实战 — 虎扑论坛步行街【requests、Beautiful Soup、MongoDB】

    爬取时间:2019-10-12 爬取难度:★★☆☆☆☆ 请求链接:https://bbs.hupu.com/bxj 爬取目标:爬取虎扑论坛步行街的帖子,包含主题,作者,发布时间等,数据保存到 Mong ...

  3. Python 爬虫小练习:基于 XPath 的表格信息爬取

    文章目录 确定目标和分析思路 目标 思路 观察情况 爬取名单表 爬取详情页二级信息 爬虫请遵守相关法律法规,不要做违法犯罪的事情 爬虫小技巧总结 这是一个 Python 爬虫的入门练习,我们通过 Re ...

  4. python爬取游戏数据,Python 爬虫之好游快爆游戏排行信息爬取

    爬取思路 1.获取人气排行榜信息页面,从中提取到每个游戏url 2.把获取到的url加入到队列中 3.从队列中获取url 进行请求获取详情页 4.从详情页获取信息,提取到游戏的信息以及评论信息 代码实 ...

  5. Python爬虫新手入门教学(十八):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  6. Python爬虫 | 对广州市政府数据统一开放平台数据的爬取

    Python爬虫 | 对广州市政府数据统一开放平台数据的爬取 简单爬虫 网页分析 爬虫代码 简单爬虫 本次爬虫演示的是对 广州市政府数据统一开放平台 数据的爬取 网页分析 我们先到url=' http ...

  7. Python爬虫系列之多多买菜小程序数据爬取

    Python爬虫系列之多多买菜小程序数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流, ...

  8. Python爬虫新手入门教学(十六):爬取好看视频小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  9. Python爬虫新手入门教学(十五):爬取网站音乐素材

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

最新文章

  1. 别再写满屏的try-catch了,真丑,全局异常处理不会吗?
  2. Docker安装和helloworld
  3. 成功解决Runtime Error Selected KDE bandwidth is 0. Cannot estiam
  4. 单片机光敏电阻控制蜂鸣器_走进单片机|第七期:湿度检测
  5. json非法字符有哪些_JSON文件中非法字符的处理
  6. 手机访问服务器中的数据库文件,手机连接服务器数据库文件在哪里
  7. 前端构建工具 Gulp.js 上手实例
  8. linux so获取自己路径,linux下so获得自己文件位置的路径
  9. Oracle 开窗函数--转
  10. C++11的dynamic_cast
  11. 《数学计算出题系统》功能规格说明书
  12. 明晰监管范围保护信息安全
  13. 海康威视监控摄像头连接电脑教程
  14. 看完必会的正则表达式和递归
  15. A - Browsing History
  16. L1-049 天梯赛座位分配
  17. QT QChartView显示坐标值
  18. 扫描二维码报修公司电脑
  19. 2018年结婚大数据来了:深圳离婚率高居第三,原因竟然是……
  20. Easy Deep Learning——卷积层

热门文章

  1. 【嘉然live2d】来给WP网站添加一个live2
  2. 【支线】基于Aidlux的Arduino小车
  3. 【大数据技术】实验4:熟悉Spark基础编程
  4. layUI中使用layer.open,在content打开数据表格,获取值并返回
  5. 频率超出范围黑屏Linux,Win10专业版分辨率超出工作频率范围黑屏怎么办
  6. 2016年蓝桥杯java——分小组
  7. python爬虫之抓取高清壁纸
  8. 多多视频如何快速涨粉(赚钱变现)
  9. python实现根据文件名自动分类转移至不同的文件夹
  10. 没有什么能够毁灭一个人的灵魂