python学习-第四节练习

问题

爬取taylorswift的图片

代码

from bs4 import BeautifulSoup
import requests,urllib.request
import time

urls = ['http://weheartit.com/inspirations/taylorswift?page={}&before=206961150'.format(i) for i in range(1,2)]
folder_path = r'C:/Users/nancy/Desktop/name/'

def get_img(url):
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text,'lxml')
    imgs = soup.select('div > div > div > div > div > a > img')
    time.sleep(2)

    download_links = []
    for img in imgs:
        img_link = img.get('src')
        download_links.append(img_link)

    for item in download_links:
        itemtext = item.replace('/', '')
        num = itemtext.split('?')[0]
        urllib.request.urlretrieve(item, folder_path + num[-20:])


for single_url in urls:
    get_img(single_url)

总结

  1. 首先遇到的代理的问题,代码一开始只能爬取国内的网站,开了全局代理就可以下载目标网页的图片了
  2. 在给图片命名的时候,由于图片最后都是thumb,所以命名时只取到这部分的话会使图片被覆盖,若再往前取几位字符的话则会出现多一个路径,比如879/thumb.jpg,这样就会报错,因此我首先用replace把‘/’去掉,然后由于图片的名字有一些jpg/png后面还有?+数字的形式,因此我采用split将链接从‘?’处分开,这样就能统一命名了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,093评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,271评论 4 61
  • 想到信用卡,你最先想到的是什么?恐怕最多的就是买买买刷爆卡,提前透支,还是积分,分期付款,各种优惠活动。对于信用卡...
    圈子账本君阅读 474评论 0 4
  • 《我的前半生》让亦舒开始被更多人知晓,她的小说就像她的人,通透,有风骨。 倪匡曾说过:“亦舒自小在香港长大,她的小...
    萌萌兔文化阅读 774评论 1 5
  • 三候:萍始生;鸣鸠拂其羽;戴胜降于桑。 谷雨,春天最后一个节气。 “春天的天气,娃娃的脸”。这娃娃脸究竟是一天三变...
    阿阿闲阅读 330评论 0 2