虎扑是广大jrs的家园,步行街是这个家园里最繁华的地段。据称广大jrs平均学历985,步行街街薪30w起步。

大学时经舍友安利,开始了解虎扑,主要是看看NBA的一些资讯。

偶尔也上上这个破街,看看jrs虐虐狗,说说家长里短等等,别的不说,jr们的三观都是特别正的。

不冷笑话基本是我每天必看的帖子,感觉楼主非常敬业,每天都会有高质量的输出,帖子下的热帖也很给力,福利满满。

正学python,突发奇想想把不冷笑话的图都爬下来。

但是虎扑在这块有限制,不登录无法查看用户的帖子,而我目前又懒得弄登陆认证(主要是还没学通-_-||)。

经过长期的观察验证,我发现不冷笑话每次都在首页主干道的固定位置,于是萌生出了直接从首页定位到帖子里的想法。

说干就干,经过我的一通分析,终于把程序写好了,爬虫的工作流程如下:

1、定位不冷笑话在首页的位置,获取链接和标题

2、建立以标题命名的目录,如果目录存在,说明已下载,程序结束

3、进入不冷笑话的界面,获取正文中的图片链接,存入列表

4、获取亮贴中的图片链接,存入列表

5、保存图片,根据传入参数为正文或评论进行命名,区分图片来源

6、大功告成

#-*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import os, time
import re
url = (r'https://nba.hupu.com/') #获取不冷笑话在首页的位置,返回url和标题
def get_buleng_title_url(url):
index_html = requests.get(url)
index_html_s = BeautifulSoup(index_html.text,'lxml')
main_street = index_html_s.find(class_ = 'gray-list main-stem max250')
url_list = []
url_name_list = []
for dd in main_street.find_all('dd',limit = 5):
url_list.append(dd.a.get('href'))
url_name_list.append(dd.a.get_text())
return [url_list[4],url_name_list[4]] #获取不冷笑话正文中的图片列表,利用set去重
def get_pic_url(buleng_list):
pic_url_list = set()
buleng_html = requests.get(buleng_list[0])
buleng_html_s = BeautifulSoup(buleng_html.text,'lxml')
buleng_content = buleng_html_s.find(class_='quote-content')
for pic_url in buleng_content.find_all('img'):
try:
original_url = pic_url.get('data-original')
pic_url_list.add(original_url.split('?')[0])
except:
pic_url_list.add(pic_url.get('src'))
return pic_url_list #创建以标题命名的文件夹,并返回是否创建成功
def makedir(buleng_list):
path = ('E:\\pic\\%s' % buleng_list[1])
if os.path.exists(path):
return 0
else:
os.makedirs(path)
return path #获取亮贴中的图片列表,set去重 def get_comment_pic_url(buleng_list):
comment_pic_url_list = set()
buleng_html = requests.get(buleng_list[0])
buleng_html_s = BeautifulSoup(buleng_html.text,'lxml')
buleng_comment = buleng_html_s.find(id='readfloor')
for floor in buleng_comment.find_all('table'):
for pic_url in floor.find_all('img'):
try:
original_url = pic_url.get('data-original')
comment_pic_url_list.add(original_url.split('?')[0])
except:
comment_pic_url_list.add(pic_url.get('src'))
return comment_pic_url_list #下载图片,可下载gif、jpg、png格式
def download_pic(pic_url_list,path,pic_from = '正文'):
a = 1
for url in pic_url_list :
if url.endswith('.gif'):
pic = requests.get(url)
with open((path+('\\%s-%s.gif' % (pic_from,a))),'wb') as f:
f.write(pic.content)
f.close
print('下载一张%s动图' % pic_from)
a += 1
if url.endswith('.jpg'):
pic = requests.get(url)
with open((path+('\\%s-%s.jpg' % (pic_from,a))),'wb') as f:
f.write(pic.content)
f.close
print('下载一张%sjpg图' % pic_from)
a +=1
if url.endswith('.png'):
pic = requests.get(url)
with open((path+('\\%s-%s.png' % (pic_from,a))),'wb') as f:
f.write(pic.content)
f.close
print('下载一张%spng图' % pic_from)
a +=1 if __name__ == "__main__":
buleng = get_buleng_title_url(url)
path = makedir(buleng)
if path != 0:
pic_url_list = get_pic_url(buleng)
comment_pic_url_list = get_comment_pic_url(buleng)
download_pic(pic_url_list,path)
download_pic(comment_pic_url_list,path,'评论')
else:
print('目录已存在,等待虎扑更新')

总结:

这个程序的主要判定贴子位置的办法就是首页帖子顺序,稍微修改一下也可以爬取主干道的其他推荐热帖,代码就不放了。

补充:

我已经把写的爬取推荐热帖的代码,放到了GitHub上,还没太搞懂Git的用法,大家多指教

地址:https://github.com/mathdogggg/zhugandao

爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷的更多相关文章

  1. [python爬虫] Selenium定向爬取虎扑篮球海量精美图片

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  2. 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息

    源代码:https://github.com/nnngu/LagouSpider 效果预览 思路 1.首先我们打开拉勾网,并搜索"java",显示出来的职位信息就是我们的目标. 2 ...

  3. Python爬取腾讯新闻首页所有新闻及评论

    前言 这篇博客写的是实现的一个爬取腾讯新闻首页所有的新闻及其所有评论的爬虫.选用Python的Scrapy框架.这篇文章主要讨论使用Chrome浏览器的开发者工具获取新闻及评论的来源地址. Chrom ...

  4. python爬取博客圆首页文章链接+标题

    新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...

  5. python3爬虫-爬取新浪新闻首页所有新闻标题

    准备工作:安装requests和BeautifulSoup4.打开cmd,输入如下命令 pip install requests pip install BeautifulSoup4 打开我们要爬取的 ...

  6. python爬取快手ios端首页热门视频

    最近快手这种小视频app,特别的火,中午吃过午饭,闲来无聊,想搞下快手的短视频,看能不能搞到. 于是乎, 打开了fiddler,开始准备抓包, 设置代理,重启,下一步,查看本机ip 手机打开网络设置 ...

  7. python爬去虎扑数据信息,完成可视化

    首先分析虎扑页面数据 如图我们所有需要的数据都在其中![image.png](1)所以我们获取需要的内容直接利用beaitifulsoupui4``` soup.find_all('a',class_ ...

  8. 小爬虫。爬取网站多页的通知标题并存取在txt文档里。

    爬取网页中通知标题的内容展示: this is  1  page!<精算学综合>科目考试参考大纲2016年上半年研究生开题报告评议审核结果公示[答辩]2016下半年研究生论文答辩及学位评定 ...

  9. Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)

    一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...

随机推荐

  1. wpf mvvm datagrid数据过滤

    原文:wpf mvvm datagrid数据过滤 datagrid数据过滤,你可以通过设置RowStyle属性,通过将Visibility绑定到ViewModel层的属性来控制是否可见,比如:   & ...

  2. npm与cnpm混用导致的问题

    npm和cnpm混用之后,再用npm升级模块导致如下错误: 解决办法: 删除node_modules文件下的文件后,重新执行npm install

  3. DOM渲染

    浏览器通常要求DOM 实现和JavaScript 实现保持相互独立.例如,在Internet Explorer 中,被称为JScript的JavaScript 实现位于库文件jscript.dll 中 ...

  4. Method for browsing internet of things and apparatus using the same

    A method for browsing Internet of things (IoT) and an apparatus using the same are provided. In the ...

  5. win10下Linux子系统开启ssh服务

    原文:win10下Linux子系统开启ssh服务 为了便于交流共同学习,博主QQ群242629020(stm32-MCU认认真真交流群) 欢迎批评指导!!!电梯:https://jq.qq.com/? ...

  6. .net core下,Ocelot网关与Spring Cloud Gateway网关的对比测试

    有感于 myzony 发布的 针对 Ocelot 网关的性能测试 ,并且公司下一步也需要对.net和java的应用做一定的整合,于是对Ocelot网关.Spring Cloud Gateway网关做个 ...

  7. WPF中使用TranslateTransform3D修改CAD的3D旋转中心

    原文:WPF中使用TranslateTransform3D修改CAD的3D旋转中心        前面一篇文章讲述了2D旋转功能的实现,文章提到了修改3D旋转中心,这一节主要总结一下具体的修改3D旋转 ...

  8. Linux性能测试 命令大全

    Linux 系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工 具来判断究竟是哪一部分(内存.CPU.硬盘……)出了问题.在 Linux 系统中,所有的运行 参数保存在虚拟目录 ...

  9. 仿真算法数据结构与算法 C++实现

    模拟算法:仿真的全过程,通过改变数学模型参数,进一步观察状态更改这些参数发生变化正当程序. 算法思路:利用随机函数来模拟不可预测发生在自然界.(srand() 和 rand()函数生成一个随机数) 模 ...

  10. asp .net 大文件传输配置

    asp .net config配置 需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedContentLength,maxRequestLength 允许上传文件的长度,和请求的长度, ...