liqi 发表于 2019-7-17 14:31

千图网爬取无水印(连视频都能爬下来哦)

在写完这篇帖子:https://www.52pojie.cn/forum.php?mod=viewthread&tid=991487&page=3#pid26914458
最后我发现,我之前的表达式又能刷了,真是造化弄人{:1_906:} 于是我改进了,请大家忘记那个垃圾东西吧:sleepy: 也有点小思路
又改进了一下代码,不过这次连视频都可以爬下来哦
测试视频和源码都在链接里,想要使用必须有个F盘里面有个bing文件夹里面在有个千图网无损文件夹我的python环境是3.7的
由于还要学抓包,所以我就不把爬取多页的代码加上了,如何想加的话,可以结合之前的代码复制粘贴就可以了,又突然想到 了,如果在首页上加个正则过滤小模块网站,岂不是能拿下整个网站的全部元素,但是对他们服务器的资源消耗还是很大的 ,所以你们就用我给的那个吧,还是不要搞事情了
链接:https://pan.baidu.com/s/1ANK5kcy65siASGmb5fe-6g
提取码:rndo
复制这段内容后打开百度网盘手机App,操作更方便哦



import re
import urllib.request
url_baba = "https://www.58pic.com/newpic/32681878.html"
data = urllib.request.urlopen(url_baba).read().decode('gbk','ignore')
tj = 'content="//preview.(.*?)!w1024_water'
mp4_tj = 'data-src="//pic.qiantucdn.com/58pic/(.*?)"'
title_tj = '<span class="pic-title fl">(.*?)</span>'
p = re.compile(tj).findall(str(data))
tit = re.compile(title_tj).findall(str(data))
mp4_p = re.compile(mp4_tj).findall(str(data))
h_z = p[-4:]
for i in range(len(p)):
    if mp4_p ==[]:
      pass
    else:
      print("发现视频,开始下载")
      mp4_hz = mp4_p[-4:]
      url = "http://pic.qiantucdn.com/58pic/" + str(mp4_p)
      file = "F:/bing/千图网无损/" + str(tit) + str(mp4_hz)
      urllib.request.urlretrieve(url, filename=file)
      print("下载成功:" + str(tit))
      continue
    url = "http://pic." + str(p)
    file = "F:/bing/千图网无损/" + str(tit) +str(h_z)
    urllib.request.urlretrieve(url,filename=file)
    print("下载成功:" +str(tit))

yjn866y 发表于 2020-3-29 11:10

我的运行出现以下提示,大神给分析一下是什么问题好吗,谢谢

=====
发现视频,开始下载
Traceback (most recent call last):
File "F:\bing\千图网无损 (2).py", line 21, in <module>
    urllib.request.urlretrieve(url,filename=file)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 531, in open
    response = meth(req, response)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 640, in http_response
    response = self.parent.error(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 502, in _call_chain
    result = func(*args)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
>>>

liqi 发表于 2019-7-17 17:06

52pojie-wangqi 发表于 2019-7-17 16:16
下了3.7安装好了,就是一打开文件窗口闪退,应该还要下一个什么文件吗?

直接打开闪退也是正常的,首先先去你的f盘创建一个新的文件夹名字叫bing,然后再在里创建一个千图网无损的文件夹,接下来点击你的开始(就是你关机要点的那个东西)有个搜索框里面搜IDLE(python3.7)打开它,然后按Ctrl+n,有个新界面左上角点一下,然后有一个open然后选择我网盘里的.py程序,如果想要下载对应的页面,只需要修改url_baba,把你要下载的网址复制进去,在双引号里面在按f5执行

mosou 发表于 2019-7-17 14:33

谢谢分享 你下面的代码在 你分享的网盘链接里有么有的话我就不复制下面的代码了

白茶似清欢 发表于 2019-7-17 14:36

感谢分享!

samofan 发表于 2019-7-17 14:44

感谢分享

kuruite 发表于 2019-7-17 14:45

正好学习Python学习了

追逐太阳 发表于 2019-7-17 14:46

这就是python爬虫

codershmily 发表于 2019-7-17 14:50

多谢楼主分享,要是能封装成一个应用就更方便了

Tesla苏 发表于 2019-7-17 14:56

谢谢楼主分享啊。

i踏梦行 发表于 2019-7-17 14:58

感谢分享,会技术不仅能赚钱还能省钱

purple6274 发表于 2019-7-17 15:01

我觉得吧可以做个易语言程序,直接输入网址就行了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 千图网爬取无水印(连视频都能爬下来哦)