如何处理python抓取的“ 403 Forbidden”响应?

时间:2019-06-19 04:38:54

标签: python web-scraping python-requests

我已经抓取了我想要的图片的URL,但是我使用请求模块下载了图片,服务器响应403 Forbidden。

我试图在chrome F12中捕获流量,主页上有很多JS响应,图片的URL只是Doc类型的响应

import requests

lines =[
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-001-a5f6.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-002-c60d.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-003-4b8a.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-004-87ac.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
]

def download_pic(url,s):
    pass
    r = s.get(url,headers = headers)
        with open(url.split('/')[-1].split('.')[0] +'.jpg','wb') as fp:
        fp.write(r.content())


def main():
    pass
    s = requests.Session()
    main_url = 'https://www.manhuagui.com/comic/12087/121333.html'
    r = s.get(main_url,headers = headers)
    for each_url in lines:
        download_pic(each_url.strip(r'\n'),s)



if __name__ == '__main__':
    main()

我无法下载想要的图片

1 个答案:

答案 0 :(得分:0)

某些网站具有针对外部来源(尤其是python文件)的请求的安全性规定。这就是为什么您收到403错误的原因。您将无法使用urllibrequests模块。

我的解决方法是我从python调用了一个shell脚本,并在其中传递了图像的URL。在shell脚本中,我使用$1访问wget传递的URL,以这样的方式下载图像:

Python:

import subprocess
subprocess.call([filename, url])

脚本(.sh)

wget $1