Python实战计划学习笔记:爬取图片

实验失败,不断的查询书上的内容,看文档,自己还是没能解决。希望今晚的课上能听到解决方案。

最终成果展示

Python实战计划学习笔记:爬取图片_第1张图片
运行代码后结果.png

我的代码

from bs4 import BeautifulSoup
import requestsimport

timeurl = 'http://weheartit.com/inspirations/taylorswift?scrolling=true&page={}'
proxies = {"http": "222.133.31.130:2226"}
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}

ipath=r'E:\study\Workspaces\pycharm\week1\homework\four\tu\pic'

def save_img(url,path,num):
    time.sleep(1)
    req = requests.get(url,proxies=proxies,headers=headers,allow_redirects=False)

    if req.status_code != 200:
        print("status error code:%d\n" % req.status_code)
        return

        filename = str(num)+'.jpg'
    with open(filename, "wb") as f:
        f.write(req.content)

def get_page(url,path,nu):
    wb_data = requests.get(url,proxies=proxies,headers=headers,allow_redirects=False)

    soup = BeautifulSoup(wb_data.text,'lxml')
    imgs = soup.select('div.entry-preview > a.js-entry-detail-link > img.entry-thumbnail')
    time.sleep(2)

    i = 24*nu - 23
    for img in imgs:
        src = img.get('src')
        time.sleep(1)
        print("number of picture:%d\n" % i)
        print("url:%s\n" % src)
        save_img(src,path,nu)
        i += 1

def get_more_page(start,end,path):
    for num in range(start,end+1):
        print("\npage %d\n" % num)
        get_page(url.format(num),path,num)
        time.sleep(2)

get_more_page(1,20,ipath)

总结

  • 这次实验失败了,我没有成功抓取规定页面的图片
  • 写爬虫准备工作的第一步,就是准备充足的代理池。实验中自己找到的代理都被图片网站封了
  • 代码的一些功能还需要进一步优化,从结构和功能上设计
  • 302,这是我最常在得到图片地址后,再次获取url后得到的http状态码。

如果这不是一个 GET 或者 HEAD 请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。
[HTTP状态码][1]
[1]:http://baike.baidu.com/link?url=3AgtkFk_p1fSX9O065HiGrRLzZhqqWswd3AqsDCE-riu1j3EDWAC_RIYv7ofALRozK7za830nYFNXb_zv2WqSq#3_3 "Optional Title Here"

你可能感兴趣的:(Python实战计划学习笔记:爬取图片)