python爬虫爬取虎扑步行街爆照区图片
开始动手的时候毫无头绪,主要借鉴了以下帖子:
https://blog.csdn.net/sinat_28797501/article/details/70195443
但是后来发现代码中还是有一些不太妥当之处,不知是因为网站更新换代、结构改变,还是代码或环境有所差异,修修补补之后,还是完成了图片的爬取。(ps:原贴做的还是很好的哈哈哈膜一波)
主要修改的几个地方:
原帖中图片存储时,格式出现了一点问题,可能是作者手误(gif图片无法保存为gif格式,只能为jepg)或者有其他考虑;
可能存在网站更新换代的情况,在收集帖子url的时候发现不存在原帖中的<tr>?跑到hupu爆照区重新看了一眼网页代码发现已经没这个结构了(原贴貌似用的是table),换成<ul>和<a>了(tagtable和tagstr);
环境不同,作者似乎用的是python2,我的是anaconda3,用到的urllib包版本也不同,作者是urllib2;
调试期间的一些小改动,为找bug,不再赘述(比如为了省事注释掉写文本文件的部分-_-!)。
之后爬了爆照区和什么图都有区,效果嘛,如下~
代码如下:
import urllib
import urllib3
from bs4 import BeautifulSoup
import loggingclass Item(object):title = None # 帖子标题firstAuthor = None # 帖子原作者firstTime = None # 帖子创建时间reNum = None # 帖子回复浏览数量LastTime = None # 帖子最后回复时间LastAuthor = None # 帖子最后回复作者link = None # 帖子链接# 全局方法获取网页内容
def getResponseContent(url):try:response = urllib.request.urlopen(url,timeout = 20)htext = response.read()except:logging.error(u'Python返回URL:{}数据失败'.format(url))# print(url)return Noneelse:logging.info(u'Python返回URL:{}数据成功'.format(url))return htextclass getHupuInfo(object):def __init__(self, url):self.url = urlself.pageSum = 100 # 帖子页数做多100页self.urls = self.getUrls(self.pageSum)self.items = self.spider(self.urls)self.pipelines(self.items)def getUrls(self, pageSum):urls = []urls.append(self.url)for pn in range(1, pageSum):tempurl = self.url + '-' + str(pn + 1)urls.append(tempurl)logging.info(u'获取URLS成功!\n')return urlsdef spider(self, urls):items = []for url in urls:htmlContent = getResponseContent(url)# print(url)if htmlContent != None:soup = BeautifulSoup(htmlContent, 'lxml')tagtable = soup.find('ul','for-list')if tagtable == None:continue# tagtable = _tagtable.find_all('a')# print(tagtable)tagstr = tagtable.find_all('a','truetit')# print("tagggggggggggggg ")# print(tagstr)flag = 0 # 跳过标题栏for tag in tagstr:# print('taaaag ')# print(tag)if flag == 0:flag += 1continueelse:flag += 1item = Item()item.link = tag.get('href') # 直接抓取href属性作为帖子链接# item.title = tag.find('td', attrs={'class': 'p_title'}).find('a',# href=item.link).get_text() # 通过item.link来确定标题# item.firstAuthor = tag.find('td', attrs={'class': 'p_author'}).a.get_text()# item.firstTime = tag.find('td', attrs={'class': 'p_author'}).get_text()# item.reNum = tag.find('td', attrs={'class': 'p_re'}).get_text()# item.LastAuthor = tag.find('td', attrs={'class': 'p_retime'}).a.get_text()# item.LastTime = tag.find('td', attrs={'class': 'p_retime'}).get_text()items.append(item)logging.info(u'获取帖子成功')return itemsdef pipelines(self, items):# i = 0fileName = u'Hupu_bxj.txt'with open(fileName, 'w') as fp:for item in items:ss = 0# i = i + 1# fp.write('{}\t{}\t{}\t{}\t{}\t{}\n{}\n\n'.format(item.title,item.firstAuthor,item.firstTime,item.reNum,item.LastAuthor,item.LastTime,item.link))# fp.write('i = '+str(i)+'\n') # 为了生词词云,这里只提取了题目logging.info(u'写入文本成功')def getpiclink(self):piclink = []for item in self.items:piclink.append(self.url[0:20] + item.link)logging.info(u'返回图片帖子链接成功')return piclinkclass picInfo(object):def __init__(self, links):self.links = linksself.imgurls = []self.spider()self.pipeline()def spider(self):if self.links == None:logging.error('无图片链接')else:for link in self.links:htmlContent = getResponseContent(link)if htmlContent == None:continuesoup = BeautifulSoup(htmlContent, 'lxml')tagDiv = soup.find('div', attrs={'id': 'tpc'})img = tagDiv.find('div', attrs={'class': 'quote-content'}).find_all('img')if img == None:continueelse:for subimg in img:# 解决图片未加载的情况if subimg.get('data-original') == None:imgurl = subimg.get('src')else:imgurl = subimg.get('data-original')self.imgurls.append(imgurl)logging.info(u'获取图片链接成功')def pipeline(self):for i in range(len(self.imgurls)):# 根据链接后缀确定图片类型if self.imgurls[i][-3:] == 'png':imgname = str(i) + '.png'elif self.imgurls[i][-3:] == 'jpg':imgname = str(i) + '.jpg'elif self.imgurls[i][-4:] == 'jpeg':imgname = str(i) + '.jpeg'elif self.imgurls[i][-3:] == 'gif':imgname = str(i) + '.gif'elif self.imgurls[i][-4:] == 'webp':imgname = str(i) + '.webp'img = getResponseContent(self.imgurls[i])with open('file_with_10pages/'+imgname, 'ab') as fp:if img == None:continuefp.write(img)logging.info(u'写入图片成功')if __name__ == '__main__':logging.basicConfig(level=logging.INFO)url = u'https://bbs.hupu.com/4846'HUPU = getHupuInfo(url)picurls = HUPU.getpiclink()PIC = picInfo(picurls)
本人是个菜鸡,欢迎各位提出改进意见哈~
python爬虫爬取虎扑步行街爆照区图片相关推荐
- Python网络爬虫爬取虎扑步行街爆照区话题
Python网络爬虫爬取虎扑步行街爆照区话题 作者:郜科科 最近的任务挺多的,但是心情很烦躁,想做一些自己喜欢的东西,前些时候感觉Python爬虫很好玩,就自学了一下.本人比较喜欢逛街--虎扑步行街, ...
- Python爬取虎扑步行街,爆照区中的照片
使用的是Python3+reqeusts 源码如下 更新于2017年9月16日 #encoding:gbk import requests import re import timedef get_p ...
- python网络爬虫-爬取虎扑步行街数据
前言 由于虎扑页面的限制,因为访问虎扑步行街的第11个页面就需要用户进行登录,鉴于此时技术还没有学全,只能爬取1到10的页面. 抓取什么数据 帖子名称 帖子链接 发帖人 发帖人链接 发帖时间 帖子回复 ...
- BeautifulSoup爬取虎扑步行街信息到Mysql
人生苦短,我用python 今天给大家爬取虎扑步行街的详细信息 效果图如下: 首先根据虎扑步行街链接获取前十个页面链接 for i in range(1, 10):link = "https ...
- Python爬虫爬取王者荣耀英雄人物高清图片
Python爬虫爬取王者荣耀英雄人物高清图片 实现效果: 网页分析 从第一个网页中,获取每个英雄头像点击后进入的新网页地址,即a标签的 href 属性值: 划线部分的网址是需要拼接的 在每个英雄的具体 ...
- 爬取虎扑步行街——秋名山论美美女壁纸图片
最近学了学爬虫,由于平时笔者经常刷虎扑,于是决定实战一下,对虎扑上的美女图片进行爬取,特地来分享一下经验. 这次主要使用了request和BeautifulSoup两个库,使用urllib库对图片进行 ...
- 爬取虎扑步行街论坛数据保存到MySQL、MongoDB
本文内容围绕获取虎扑步行街论坛上所有帖子的数据开展的,爬取的内容包括帖子名称.帖子链接.作者.作者链接.创建时间.回复数.浏览数.最后回复用户和最后回复时间,将爬取的数据分别保存在MongoDB和My ...
- python爬虫爬取虎扑湖人论坛专区帖子数据,并存入MongoDB数据库中
今天就带大家从头到尾一步一步带着大家爬取虎扑论坛帖子的数据,里面涉及到的一些知识,我会给出学习的连接,大家可以自行去学习查看. 前期准备 首先我们打开虎扑NBA论坛,我选择的是湖人专区(小湖迷一个). ...
- python爬虫爬取王者荣耀官网全部装备图片(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests from bs4 import Beauti ...
最新文章
- (转)SpringBoot系列—Redis使用
- C 语言编程 — 运算符
- 容器网络|深入理解Cilium
- some VM operation when debugging appointment startup
- vo listVO paggerHelper mapper使用原则
- Gartner 发布2019年超融合魔力象限:新增深信服一员!
- MongoDB出错:ERROR: child process failed, exited with error number 1 To see additional infor
- 删除计算机共享信息命令,win10系统使用命令将网络共享删除的操作办法
- LinuxMint下的Orionode源码安装
- Java中的AtomicInteger
- 【一天一个C++小知识】011.C++编译的流程
- 【黑苹果】宏基Acer Predator Helios 300+ i7-7700HQ+Opencore +MacOS10.14.6 efi文件下载!
- 最全CTF Web题思路总结(更新ing)
- Python编写三角形
- Windows每次开机键盘无法使用,需要重新拔插键盘USB接口的解决方案
- 雷电模拟器修改系统语言
- 三维视频融合 倾斜摄影模型 开放c++源代码 支持与java js交互 内嵌web容器 可用于雪亮工程 等 安防项目 稳定流畅 点卯系列
- Awesome Chrome 插件集锦
- 耕、林、园地分类搞不定?PIE-Engine机器学习带你攻克难题
- 华为云计算产品白皮书与案例合集