鱼C论坛

 找回密码
 立即注册
查看: 1859|回复: 14

[已解决]萌新快自闭了 请大佬指点一下

[复制链接]
发表于 2019-4-17 22:25:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import re
  2. import urllib.request
  3. import random
  4. def urlopen(url):
  5.     req = urllib.request.Request(url)
  6.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6823.400 QQBrowser/10.3.3117.400')

  7.     proxies = ['124.152.32.140:53281', '163.125.157.53:8888', '163.125.157.49:8888']
  8.     proxy = random.choice(proxies)

  9.     proxy_support = urllib.request.ProxyHandler({'http':proxy})
  10.     opener = urllib.request.build_opener(proxy_support)
  11.     urllib.request.install_opener(opener)

  12.     html = urllib.request.urlopen(req)
  13.     html = html.read()
  14.     return html
  15. def zhuyao(url):
  16.     a = urlopen(url)
  17.     a = a.decode('utf-8')
  18.     p = r'<img src="([^"]+\.jpg)"'
  19.     tplj = re.findall(p,a)
  20.     b = urlopen(tplj)
  21.     with open('一张妹子图','wb') as f:
  22.         f.write(b)


  23. if __name__=='__main__':
  24.     url = 'https://www.mzitu.com/176550/6'
  25.     zhuyao(url)
复制代码

请问这里哪里有问题啊  我运行起来  
Traceback (most recent call last):
  File "C:\Users\tx\Desktop\妹子图片爬取 - 副本.py", line 30, in <module>
    zhuyao(url)
  File "C:\Users\tx\Desktop\妹子图片爬取 - 副本.py", line 23, in zhuyao
    b = urlopen(tplj)
  File "C:\Users\tx\Desktop\妹子图片爬取 - 副本.py", line 15, in urlopen
    html = urllib.request.urlopen(req)
  File "C:\Python3.7.2\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python3.7.2\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)
  File "C:\Python3.7.2\lib\urllib\request.py", line 548, in _open
    'unknown_open', req)
  File "C:\Python3.7.2\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\Python3.7.2\lib\urllib\request.py", line 1387, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: ['https>
他报这样的错误   但是我感觉我代码没问题啊 是什么情况啊
最佳答案
2019-4-18 11:33:28
竹茶 发表于 2019-4-18 11:28
额  我上面还加了代理IP 也不行吗。。。 而且我就爬一张图片  频率也不高啊。。。。   headder除了改User ...

建议重新学习

https://www.bilibili.com/video/av23695737?zw
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-17 22:54:04 | 显示全部楼层

回帖奖励 +5 鱼币

第22行re.findall(p,a)返回的是一个列表,你得把列表读取出来传给urlopen

另外你得正则表达式好像也不行吧,得改为非贪婪模式
r'<img src="([^"]+?\.jpg)"'         
+号后面多个问号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 10:52:52 | 显示全部楼层
cwhsmile 发表于 2019-4-17 22:54
第22行re.findall(p,a)返回的是一个列表,你得把列表读取出来传给urlopen

另外你得正则表达式好像也不行 ...
  1. import re
  2. import urllib.request
  3. import random
  4. def urlopen(url):
  5.     req = urllib.request.Request(url)
  6.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6823.400 QQBrowser/10.3.3117.400')

  7.     proxies = ['124.152.32.140:53281', '163.125.157.53:8888', '163.125.157.49:8888']
  8.     proxy = random.choice(proxies)

  9.     proxy_support = urllib.request.ProxyHandler({'http':proxy})
  10.     opener = urllib.request.build_opener(proxy_support)
  11.     urllib.request.install_opener(opener)

  12.     html = urllib.request.urlopen(req)
  13.     html = html.read()
  14.     return html
  15. def zhuyao(url):
  16.     a = urlopen(url)
  17.     a = a.decode('utf-8')
  18.     p = r'<img src="([^"]+?\.jpg)"'
  19.     tplj = re.findall(p,a)
  20.     for each in tplj:
  21.         b = urlopen(each)
  22.         with open('一张妹子图','wb') as f:
  23.             f.write(b)


  24. if __name__=='__main__':
  25.     url = 'https://www.mzitu.com/176550/6'
  26.     zhuyao(url)
复制代码
改成这样好像也不行啊  
Traceback (most recent call last):
  File "C:\Users\tx\Desktop\妹子图片爬取 - 副本.py", line 31, in <module>
    zhuyao(url)
  File "C:\Users\tx\Desktop\妹子图片爬取 - 副本.py", line 24, in zhuyao
    b = urlopen(each)
  File "C:\Users\tx\Desktop\妹子图片爬取 - 副本.py", line 15, in urlopen
    html = urllib.request.urlopen(req)
  File "C:\Python3.7.2\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python3.7.2\lib\urllib\request.py", line 531, in open
    response = meth(req, response)
  File "C:\Python3.7.2\lib\urllib\request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python3.7.2\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)
  File "C:\Python3.7.2\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\Python3.7.2\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
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 10:55:58 | 显示全部楼层
cwhsmile 发表于 2019-4-17 22:54
第22行re.findall(p,a)返回的是一个列表,你得把列表读取出来传给urlopen

另外你得正则表达式好像也不行 ...
  1. ['https://i.meizitu.net/2019/03/20b06.jpg']
复制代码

他返回的是这样一个列表  我是直接搜索一个图片链接的链接的。。。  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 11:04:10 | 显示全部楼层
不是说妹子图 加入了反爬机制吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 11:11:06 | 显示全部楼层
wp231957 发表于 2019-4-18 11:04
不是说妹子图 加入了反爬机制吗

是的,他改后的代码提示403错误,请求被禁止

把你的headers再改改,不能只有User-Agent
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 11:28:44 | 显示全部楼层
cwhsmile 发表于 2019-4-18 11:11
是的,他改后的代码提示403错误,请求被禁止

把你的headers再改改,不能只有User-Agent

额  我上面还加了代理IP 也不行吗。。。 而且我就爬一张图片  频率也不高啊。。。。   headder除了改User-Agent  还能改什么啊  请大佬指教啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 11:33:28 | 显示全部楼层    本楼为最佳答案   
竹茶 发表于 2019-4-18 11:28
额  我上面还加了代理IP 也不行吗。。。 而且我就爬一张图片  频率也不高啊。。。。   headder除了改User ...

建议重新学习

https://www.bilibili.com/video/av23695737?zw
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 11:34:15 | 显示全部楼层
竹茶 发表于 2019-4-18 11:28
额  我上面还加了代理IP 也不行吗。。。 而且我就爬一张图片  频率也不高啊。。。。   headder除了改User ...

https://www.bilibili.com/video/av23695737?zw
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 19:56:39 | 显示全部楼层
cwhsmile 发表于 2019-4-18 11:34
https://www.bilibili.com/video/av23695737?zw

效率革命。。 我还没学到哪里  我打算学习完入门在学的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 21:31:38 | 显示全部楼层
本帖最后由 伏惜寒 于 2019-4-18 21:32 编辑

别试了,它添加了反爬机制,请求网页的时候需要获取cookie值,没有cookie不让读取网页的,有两个方法可以爬取。
1.用开发者工具获取cookie,你可以选择手动添加cookie值,不过那样和直接浏览器打开没啥区别
2.import http.cookiejar  使用这个模块来获取cookie,加入请求信息后来爬取,请自行自行百度,
我主要用的requests模块爬取不太了解urllib模块爬取方法所以怎么加进去就自行百度了
ps(cookie是随机且有回收机制的,别想者一个cookie就可以乱用)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 22:26:33 | 显示全部楼层
本帖最后由 Stubborn 于 2019-4-18 22:30 编辑

            Headers = {

                'User-Agent': ‘请求头’,
                'Referer': img_url
            }
请求头加上图片的url
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 22:30:03 | 显示全部楼层
伏惜寒 发表于 2019-4-18 21:31
别试了,它添加了反爬机制,请求网页的时候需要获取cookie值,没有cookie不让读取网页的,有两个方法可以爬 ...

妹子图,没有cookie反爬机制,有个防盗的玩意,请求带上Url就可以下载到图片,前几天我还下载到了,代码还可以用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-19 12:33:11 | 显示全部楼层
Stubborn 发表于 2019-4-18 22:30
妹子图,没有cookie反爬机制,有个防盗的玩意,请求带上Url就可以下载到图片,前几天我还下载到了,代码 ...

网站快让你们玩坏了,一堆老男人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-19 17:49:02 | 显示全部楼层
cwhsmile 发表于 2019-4-19 12:33
网站快让你们玩坏了,一堆老男人

研究,参考,不做任何欣赏图片的事情
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 23:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表