【甩棍杂谈——全国最热门的甩棍论坛】

标题: 阿奔哥的福利图爬取--python代码分享 [打印本页]

作者: HenryYang    时间: 2019-3-9 16:33
标题: 阿奔哥的福利图爬取--python代码分享

    最近半个月,我开始自学python爬虫。这是我第一个独立完成的脚本,发帖纪念一下。
    首先要向游大声明一下,此贴纯粹为学习交流、经验分享之用,本人绝无恶意爬取蚂蚁论坛,仅出于练手目的爬取阿奔发表的图片,代码里也设置了暂停时间,防止服务器请求过多无法响应。以后再不会爬取蚂蚁论坛来练手(除非游大做了反爬措施,那可能还会再练手一次,不过现在还没这水平)。

1)一开始的需求构想:提取图片地址,筛除非福利图,只保留美女图片(嘿嘿),保存到同一个文件夹里方便观看;
实际效果:无筛除功能,因为非福利图的来源是新浪图片(大概是),但有些福利图也是这个来源,故不作筛除(还是贪心啊,只要是福利图就不想放过);

2)实际运行结果:在爬取到936张图片(1.99GB)后,由于未知原因程序终止,报错信息:urllib.error.HTTPError: HTTP Error 404: Not Found

现在还是找不出为什么报这个错;另外新手的代码难免繁杂,若有(阿)高(奔)手(哥)看不下去,不吝指点一下怎么写得更简洁,或者怎么解决这个报错,感激不尽!

废话有点多,下面代码奉上(由于cookie含有个人登录信息,怕有高手破解,故用'***'代替):

import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
import re
import os
import time
import socket

socket.setdefaulttimeout(20)  # 设置socket层的超时时间为20秒
url_t = 'http://www.mayi.sg/home.php?mod=space&uid=61184&do=thread&view=me&order=dateline&from=space&'

def handle_request(url):
   headers = {
      'Cookie': '*******************************************************************************',

      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
   }
   req = urllib.request.Request(url=url, headers=headers)
   content = urllib.request.urlopen(req).read()
   return content

def save(img_url,img_name):
   print('正在保存: {}'.format(img_name))
   if not os.path.exists('./images'):
      os.mkdir(os.path.abspath('./images'))
   img = handle_request(img_url)
   with open(os.path.abspath('./images/{}').format(str(img_name)), 'wb') as fp:
      fp.write(img)

def img_Spider(pa_url):
   #解析内容,生成图片url的列表及图片名列表
   content = handle_request(pa_url).decode('gbk')
   soup = BeautifulSoup(content, 'lxml')
   #定位到:div align="left"
   img_group = soup.find_all('div', align="left")
   for img_subgroup in img_group:
      img_subgroup = str(img_subgroup.find_all('font' > 'font' > 'font'))
      url_pattern = re.compile(r'.*?src="(.*?)".*?',re.S)
      try:
         img_url = url_pattern.findall(img_subgroup)[0]
         # 返回的是一个列表,其中是4个相同的图片url地址,所以取其中任意一个元素
         imgname_pattern = re.compile(r'[^/]+(?!.*jpg|png|gif)')
         # 图片名
         img_name = imgname_pattern.findall(img_url)[-1]
         # 保存图片
         save(img_url, img_name)
      except IndexError:
         pass

def main():
   print('=====开始爬取阿奔发布的图片=====')
   #拼接所有入口的url,构建循环
   page = 1
   while page >= 0:
      data_url = {
         'page': page
      }
      data = urllib.parse.urlencode(data_url)
      main_url = url_t + data
      print('开始爬取第{}个主页: '.format(page) + main_url)
      #构建请求对象,发送请求,获取内容
      content = handle_request(main_url).decode('gbk')
      #解析页面上所有要爬取的链接,生成列表
      soup = BeautifulSoup(content, 'lxml')
      web_list = soup.select('th')[1:]
      #遍历列表,依次获取要爬取的具体页面,启动爬虫
      for url in web_list:
         pa_url = 'http://www.mayi.sg/' + url.a['href']
         img_Spider(pa_url)
         time.sleep(
6)
      time.sleep(
10)
      page +=
1
   print('全部爬取结束!')


if __name__ == '__main__':
   main()

2019-03-09_16-31-31.jpg (218.09 KB, 下载次数: 6)

文件夹截图

文件夹截图

2019-03-09_16-24-09.png (20.88 KB, 下载次数: 4)

2019-03-09_16-24-09.png

作者: 萧①    时间: 2019-3-9 18:33
老衲奉劝施主,这样不好

作者: HenryYang    时间: 2019-3-9 18:54
萧① 发表于 2019-3-9 18:33
老衲奉劝施主,这样不好

大师说笑了

作者: 战神再现    时间: 2019-3-9 19:05
小伙,你营养快线准备好了吗
作者: 一滴灌    时间: 2019-3-9 19:21
图片 人工筛选 才行啊,因为要求高嘛
作者: 猪~有才    时间: 2019-3-9 19:39
好厉害的样子,小心游侠兄弟给你封号

作者: 一棍劈头    时间: 2019-3-9 19:51
这么厉害的嘛

作者: HenryYang    时间: 2019-3-9 19:59
一棍劈头 发表于 2019-3-9 19:51
这么厉害的嘛

刚入门而已

作者: HenryYang    时间: 2019-3-9 20:00
战神再现 发表于 2019-3-9 19:05
小伙,你营养快线准备好了吗

只存图 不伤身

作者: HenryYang    时间: 2019-3-9 20:01
一滴灌 发表于 2019-3-9 19:21
图片 人工筛选 才行啊,因为要求高嘛

哈哈 不筛了 全都要

作者: HenryYang    时间: 2019-3-9 20:01
猪~有才 发表于 2019-3-9 19:39
好厉害的样子,小心游侠兄弟给你封号

应该不会的。。游大很民主的吧。。

作者: 星光使者    时间: 2019-3-9 20:14
完全看不懂
作者: HenryYang    时间: 2019-3-9 20:21
星光使者 发表于 2019-3-9 20:14
完全看不懂

隔行如隔山 以前我也完全看不懂

作者: 重庆崽儿麦麦哥    时间: 2019-3-9 20:37
不懂,感觉好厉害的样子?


作者: HenryYang    时间: 2019-3-9 20:48
重庆崽儿麦麦哥 发表于 2019-3-9 20:37
不懂,感觉好厉害的样子?

还好还好

作者: wms    时间: 2019-3-9 20:51
看不懂  算你厉害
作者: 一棍劈头    时间: 2019-3-9 20:54
HenryYang 发表于 2019-3-9 19:59
刚入门而已

水神是你

作者: 一棍劈头    时间: 2019-3-9 20:56
HenryYang 发表于 2019-3-9 20:00
只存图 不伤身

你会忍不住的

作者: 一棍劈头    时间: 2019-3-9 20:57
重庆崽儿麦麦哥 发表于 2019-3-9 20:37
不懂,感觉好厉害的样子?

他把车都存起来了麦麦哥

作者: 一棍劈头    时间: 2019-3-9 20:57
猪~有才 发表于 2019-3-9 19:39
好厉害的样子,小心游侠兄弟给你封号

不会的吧哈哈

作者: 一棍劈头    时间: 2019-3-9 20:57
萧① 发表于 2019-3-9 18:33
老衲奉劝施主,这样不好

容易虚

作者: 一棍劈头    时间: 2019-3-9 20:58
战神再现 发表于 2019-3-9 19:05
小伙,你营养快线准备好了吗

喝多少也补不回来了

作者: songmingyuee    时间: 2019-3-9 20:58
你抢了别人的帖子了
作者: HenryYang    时间: 2019-3-9 21:04
一棍劈头 发表于 2019-3-9 20:54
水神是你

是我是我

作者: HenryYang    时间: 2019-3-9 21:05
songmingyuee 发表于 2019-3-9 20:58
你抢了别人的帖子了

什么意思 没懂。。

作者: HenryYang    时间: 2019-3-9 21:05
一棍劈头 发表于 2019-3-9 20:56
你会忍不住的

不会的。。看图片真不会。。

作者: HenryYang    时间: 2019-3-9 21:06
wms 发表于 2019-3-9 20:51
看不懂  算你厉害

哈哈 还好还好

作者: 一棍劈头    时间: 2019-3-9 21:16
HenryYang 发表于 2019-3-9 21:04
是我是我

快继续水

作者: 一棍劈头    时间: 2019-3-9 21:17
HenryYang 发表于 2019-3-9 21:05
不会的。。看图片真不会。。

那你不厉害

作者: YYJY    时间: 2019-3-9 21:17
好厉害的样子哦

作者: 平歌    时间: 2019-3-9 21:38
这是搞高科技?

作者: HenryYang    时间: 2019-3-9 21:59
一棍劈头 发表于 2019-3-9 21:16
快继续水

发帖就是水啊 哈哈

作者: HenryYang    时间: 2019-3-9 22:00
一棍劈头 发表于 2019-3-9 21:17
那你不厉害

看视频是可能会的

作者: HenryYang    时间: 2019-3-9 22:00
平歌 发表于 2019-3-9 21:38
这是搞高科技?

算不上 一个脚本程序而已

作者: HenryYang    时间: 2019-3-9 22:00
YYJY 发表于 2019-3-9 21:17
好厉害的样子哦

还好还好

作者: 一棍劈头    时间: 2019-3-9 22:14
HenryYang 发表于 2019-3-9 21:59
发帖就是水啊 哈哈

水到啥了?

作者: 一棍劈头    时间: 2019-3-9 22:15
HenryYang 发表于 2019-3-9 22:00
看视频是可能会的

咦,不行呀

作者: abcdcba    时间: 2019-3-9 22:34
继续努力,争取早日用上你的爬小视频的爬虫
作者: HenryYang    时间: 2019-3-9 22:38
一棍劈头 发表于 2019-3-9 22:14
水到啥了?

水金钱啊。。。
作者: HenryYang    时间: 2019-3-9 22:38
一棍劈头 发表于 2019-3-9 22:15
咦,不行呀

你能看什么都不会吗
作者: HenryYang    时间: 2019-3-9 22:39
abcdcba 发表于 2019-3-9 22:34
继续努力,争取早日用上你的爬小视频的爬虫

哈哈 我也这么想的 不过现在好久都没上过h网了 不知道网址了 国外的要翻墙 现在翻墙也不好翻了 唉
作者: samlee39    时间: 2019-3-9 22:43
神马玩意

作者: 一棍劈头    时间: 2019-3-9 22:48
HenryYang 发表于 2019-3-9 22:38
水金钱啊。。。

水到棍了没

作者: 一棍劈头    时间: 2019-3-9 22:49
HenryYang 发表于 2019-3-9 22:38
你能看什么都不会吗

不不不,我是看什么都会

作者: 天行道    时间: 2019-3-9 23:02
少儿不宜

作者: HenryYang    时间: 2019-3-9 23:08
一棍劈头 发表于 2019-3-9 22:48
水到棍了没

还早呢 得今年底了
作者: HenryYang    时间: 2019-3-9 23:08
一棍劈头 发表于 2019-3-9 22:49
不不不,我是看什么都会

那你这个。。得多看啊
作者: HenryYang    时间: 2019-3-9 23:09
天行道 发表于 2019-3-9 23:02
少儿不宜

你也不小了 可以看
作者: 探戈风    时间: 2019-3-10 00:04
美女图片

作者: 大波播    时间: 2019-3-10 00:17
文中链接看不了

作者: 大波播    时间: 2019-3-10 00:41
一棍劈头 发表于 2019-3-9 20:58
喝多少也补不回来了

喝游侠荔枝酒

作者: HenryYang    时间: 2019-3-10 06:46
samlee39 发表于 2019-3-9 22:43
神马玩意

一个保存图片的脚本

作者: HenryYang    时间: 2019-3-10 06:46
探戈风 发表于 2019-3-10 00:04
美女图片



作者: HenryYang    时间: 2019-3-10 06:47
大波播 发表于 2019-3-10 00:17
文中链接看不了

那是代码里的 链接不完整 因为要拼接一下 构建循环 想看的话直接看阿奔发的帖子就好了

作者: zhyhant    时间: 2019-3-10 07:10
厉害厉害
作者: 一棍劈头    时间: 2019-3-10 07:33
HenryYang 发表于 2019-3-9 23:08
还早呢 得今年底了

这么久吗

作者: 一棍劈头    时间: 2019-3-10 07:34
HenryYang 发表于 2019-3-9 23:08
那你这个。。得多看啊

唉,少看为好

作者: 中国龙    时间: 2019-3-10 07:37
这样不好
作者: 一棍劈头    时间: 2019-3-10 07:41
大波播 发表于 2019-3-10 00:41
喝游侠荔枝酒

也补不回来啊

作者: 不发表任何看法    时间: 2019-3-10 08:06
重庆崽儿麦麦哥 发表于 2019-3-9 20:37
不懂,感觉好厉害的样子?

神回复

作者: 不发表任何看法    时间: 2019-3-10 08:06
HenryYang 发表于 2019-3-9 21:05
不会的。。看图片真不会。。

看什么才会

作者: 不发表任何看法    时间: 2019-3-10 08:08
楼主的钻研精神还是不错的

作者: 梦想森林    时间: 2019-3-10 08:15
阿奔有些图确实很猛,我喜欢!
作者: 月色远山    时间: 2019-3-10 08:23
看得我一脸懵逼……
作者: 欧阳小白    时间: 2019-3-10 08:31
可以技术活
作者: 欧阳小白    时间: 2019-3-10 08:32
能分享一下Python的学习方法吗?
作者: 欧阳小白    时间: 2019-3-10 08:33
有什么学习资源什么的
作者: gaosencctv    时间: 2019-3-10 08:51
不太懂这个
作者: 欧阳小白    时间: 2019-3-10 09:04
HenryYang 发表于 2019-3-10 06:47
那是代码里的 链接不完整 因为要拼接一下 构建循环 想看的话直接看阿奔发的帖子就好了

有事请教
作者: 重庆崽儿麦麦哥    时间: 2019-3-10 09:57
HenryYang 发表于 2019-3-9 20:48
还好还好

大神来的!

作者: 重庆崽儿麦麦哥    时间: 2019-3-10 09:58
一棍劈头 发表于 2019-3-9 20:57
他把车都存起来了麦麦哥

也是爱车之人啊!

作者: 重庆崽儿麦麦哥    时间: 2019-3-10 09:58
不发表任何看法 发表于 2019-3-10 08:06
神回复

传说中的“骇客”?

作者: HenryYang    时间: 2019-3-10 10:15
zhyhant 发表于 2019-3-10 07:10
厉害厉害

还好还好

作者: HenryYang    时间: 2019-3-10 10:15
一棍劈头 发表于 2019-3-10 07:33
这么久吗

水一个月的回复 天天水 才大概20多一点的金币

作者: HenryYang    时间: 2019-3-10 10:16
一棍劈头 发表于 2019-3-10 07:34
唉,少看为好

是的是的 哈哈 看没事 关键是看了容易伤身

作者: HenryYang    时间: 2019-3-10 10:16
中国龙 发表于 2019-3-10 07:37
这样不好

我觉得挺好 哈哈

作者: HenryYang    时间: 2019-3-10 10:17
不发表任何看法 发表于 2019-3-10 08:06
看什么才会

视频啊 视频看多了就会

作者: HenryYang    时间: 2019-3-10 10:17
不发表任何看法 发表于 2019-3-10 08:08
楼主的钻研精神还是不错的

谢谢支持

作者: HenryYang    时间: 2019-3-10 10:17
梦想森林 发表于 2019-3-10 08:15
阿奔有些图确实很猛,我喜欢!

大家都喜欢

作者: HenryYang    时间: 2019-3-10 10:18
月色远山 发表于 2019-3-10 08:23
看得我一脸懵逼……

正常 隔行如隔山。。

作者: HenryYang    时间: 2019-3-10 10:20
欧阳小白 发表于 2019-3-10 08:33
有什么学习资源什么的

你也要学吗 我是在51cto上花钱买的视频课程 不过有一个大神很鄙视我这种花钱的 因为网上好多免费的 他是在csdn上自己找的博客文章 你在上面搜python 会出来很多 归纳得很详细的 从入门开始教

作者: HenryYang    时间: 2019-3-10 10:21
gaosencctv 发表于 2019-3-10 08:51
不太懂这个

水回复就好 不用懂 谢谢支持

作者: HenryYang    时间: 2019-3-10 10:21
重庆崽儿麦麦哥 发表于 2019-3-10 09:57
大神来的!

谢谢支持

作者: 探戈风    时间: 2019-3-10 10:35
HenryYang 发表于 2019-3-10 06:46



作者: ghf331    时间: 2019-3-10 10:37
不错的说

作者: 不发表任何看法    时间: 2019-3-10 11:02
重庆崽儿麦麦哥 发表于 2019-3-10 09:58
传说中的“骇客”?

个中好手啊

作者: 不发表任何看法    时间: 2019-3-10 11:02
HenryYang 发表于 2019-3-10 10:17
视频啊 视频看多了就会

呃(ー_ー)!!这么厉害吗

作者: 不发表任何看法    时间: 2019-3-10 11:03
HenryYang 发表于 2019-3-10 10:17
谢谢支持

确实挺厉害的,刮目相看,原来不光会水回复

作者: 一棍劈头    时间: 2019-3-10 11:10
重庆崽儿麦麦哥 发表于 2019-3-10 09:58
也是爱车之人啊!

个个都爱开车

作者: 一棍劈头    时间: 2019-3-10 11:12
HenryYang 发表于 2019-3-10 10:15
水一个月的回复 天天水 才大概20多一点的金币

两天就有20了吧

作者: 一棍劈头    时间: 2019-3-10 11:13
HenryYang 发表于 2019-3-10 10:16
是的是的 哈哈 看没事 关键是看了容易伤身

忍得住忍得住

作者: zzaqc    时间: 2019-3-10 13:28
封装好再发上来给大家直接用

作者: HenryYang    时间: 2019-3-10 14:49
一棍劈头 发表于 2019-3-10 11:12
两天就有20了吧

金币 不是金钱

作者: HenryYang    时间: 2019-3-10 14:49
不发表任何看法 发表于 2019-3-10 11:03
确实挺厉害的,刮目相看,原来不光会水回复

哈哈 谢谢 水回复省下来的时间学点东西

作者: HenryYang    时间: 2019-3-10 14:52
ghf331 发表于 2019-3-10 10:37
不错的说

谢谢支持

作者: HenryYang    时间: 2019-3-10 15:27
zzaqc 发表于 2019-3-10 13:28
封装好再发上来给大家直接用

不行啊 万一服务器被爬爆了 我以后都莫得棍子玩了
作者: 欧阳小白    时间: 2019-3-10 16:18
HenryYang 发表于 2019-3-10 10:20
你也要学吗 我是在51cto上花钱买的视频课程 不过有一个大神很鄙视我这种花钱的 因为网上好多免费的 他是 ...

谢谢啦
作者: 20170523    时间: 2019-3-10 17:36
你这太厉害了,高手啊,和你学习一下,教教!!!
作者: 20170523    时间: 2019-3-10 17:37
你是程序猿吗!!!
作者: 小艾街球    时间: 2019-3-10 19:22
阿奔上热搜了





欢迎光临 【甩棍杂谈——全国最热门的甩棍论坛】 (http://www.mayi.sg/) Powered by Discuz! X3.2