爬虫修改成功版

本文介绍了一个Python爬虫实战案例,解决了无法保存jpg格式图片的问题,通过将图片格式改为PNG,并修复了被阻止访问的图片地址。爬虫使用requests和BeautifulSoup库,模拟浏览器发送请求,获取网页上的jpg图片链接,并将其下载到按日期命名的文件夹中,通过随机延时避免频繁请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题改进:

1:无法保存jpg格式,将图片格式换成了PNG。

2:被阻止访问

被阻止访问的图片地址格式:https://www.gamersky.com/showimage/id_gamersky.shtml?https://img1.gamersky.com/image2020/09/20200909_ls_red_141_3/gamersky_020origin_039_20209918207DC.jpg

修改后的访问格式:https://img1.gamersky.com/image2020/09/20200909_ls_red_141_3/gamersky_020origin_039_20209918207DC.jpg

 

#爬虫实战
import requests,urllib.request
from bs4 import BeautifulSoup
import os
import datetime,time
import random

#获取当前年月日并创建以年月日命名的文件夹
today=datetime.date.today()
if not os.path.exists(f'{today}'):
    os.makedirs(f'{today}') #如果没有这个path则直接创建

#爬虫部分
#头文件
header={"User-Agent":"Mozila/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36"} #利用header模拟是从谷歌浏览器发出请求

name=1
for i in range(2,45):
    url='https://www.gamersky.com/ent/202009/1319344_{}.shtml'.format(i)
    r=requests.get(url,headers=header)
    r.encoding = r.apparent_encoding#解决中文乱码问题
    html=r.text
    soup=BeautifulSoup(html,'lxml')#lxml是解析器
##    print(soup.p)#soup.p只能获得第一个p元素
##    print(soup.find_all('p'))#可以获取所有p元素
    list=soup.find_all('a')  #图片地址在Mid2L_con类的P标签下的a标签里
    for li in list:
        address=li.get('href')
        if '.jpg' in str(address):
##            print(address) #已经获得URL,接下来是保存图片
            b=address[53:]#修改图片访问地址
##            urllib.request.urlretrieve(address, f'./{today}/{str(name)}.png')#这种方法还没试
            pic=requests.get(b,headers=header)
            f=open(f'./{today}/{str(name)}.png','ab')
            f.write(pic.content)
            f.close()
            time.sleep(random.randint(1,5))#睡吧睡吧乖宝宝
            name +=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值