欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单的爬虫

程序员文章站 2022-04-02 11:05:28
import requests,re,time,osfrom lxml import etree#先定义一个图片保存的路径path = r'C:\Users\wxzhanghs\Desktop\必应'#判断路径是否存在,如果不存在则创建一个,存在则忽略folder= os.path.exists(path)if not folder: folder = os.mkdir(path)else: pass#定义要爬取的页数for page in range(9,10):...
import requests,re,time,os
from lxml import etree
#定义要爬取的页数
for page in range(9,10):
    # 先定义一个图片保存的路径
    path = fr'C:\Users\wxzhanghs\Desktop\必应\第{page}页'
    # 判断路径是否存在,如果不存在则创建一个,存在则忽略
    folder = os.path.exists(path)
    if not folder:
        folder = os.mkdir(path)
    else:
        pass
    #第一页的网址是不带参数的
    if page == 1:
        url = 'https://bing.ioliu.cn'
    #后面所有页码的网址都要加一个页码的参数
    else:
        url = f'https://bing.ioliu.cn/?p={page}'
    #加入请求头,模拟浏览器发起请求,防止被反扒
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36'
    header = {'user-agent':user_agent}
    req = requests.get(url=url,headers=header)
    #转换返回的html网页
    str1 = etree.HTML(req.content)
    urls = str1.xpath('//img/@src')
    names = str1.xpath('//h3/text()')
    #定义一个图片编号
    imgnum = 1
    #同时遍历图片url和name列表
    for (imgurl,imgname) in zip(urls,names):
        # 直接获取图片分辨率很小,要替换成电脑屏幕的分辨率
        imgurl1 = imgurl.replace('640x480', '1920x1080')
        # 剔除图片描述中不需要的内容
        imgname1 = imgname.split('(')[0]
        #获取图片
        img = requests.get(url=imgurl1, headers=header).content
        #写入建好的文件夹中,因为有的文件名没有括号,所以会报错,这种情况下跳过
        #无论失败还是成功都更新图片编号
        try:
            with open(path+f'\\{imgname1}.jpg'.format(imgnum),'wb') as f:
                f.write(img)
            print(f'获取第{page}页第{imgnum}张图片成功')
            imgnum += 1
        except FileNotFoundError:
            print(f'获取第{page}页第{imgnum}张图片失败')
            imgnum+=1
    #在每页爬取完后,等待2秒,防止被禁
    time.sleep(2)








  

本文地址:https://blog.csdn.net/weixin_44746955/article/details/110877539

相关标签: python