前言

需要用到requestslxml

requests:

requests是使用Apache2 licensed 许可证的HTTP库。用python编写。比urllib2模块更简洁。
Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。现代,国际化,友好。requests会自动实现持久连接keep-alive

lxml:

python用来解析xml和html模块,用这个模块就可以使用xpath语法。xpath就是用来筛选html或者xml中元素语法。如果匹配标签和元素,则返回element对象,如果匹配到的是标签和text,则返回字符串。

附图

必应壁纸爬取

必应爬取

from lxml import html
etree = html.etree
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
a = 0
for page in range(1, 2):
    url = 'https://bing.ioliu.cn/?p={}'.format(page)
    response = requests.get(url=url, headers=headers).text
    html = etree.HTML(response)
    lis = html.xpath('//div[@class="item"]/div/img/@src')
    for li in lis:
        b = str(li).replace('640x480', "1920x1080")
        response_data = requests.get(b, headers=headers).content
        with open('path/'+str(a) + '.jpg', 'wb')as f:
            f.write(response_data)
            a += 1
        print("下载成功")

另一种方法

来源于https://blog.csdn.net/lx1315998513/article/details/105731087

import requests
from lxml import etree
import os
 
#必应图片网页地址 https://bing.ioliu.cn/?p=3
url = 'https://bing.ioliu.cn/'
#浏览器参数
header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
    #referer的作用就是记录你在访问一个目标网站时,在访问前你的原网站的地址
    'Referer':'http://bing.ioliu.cn'
}
#图片的张数
number = 0

 #下载网页
html = requests.get(url,headers=header).text 
   
#构造xpath的解析对象
etree_html = etree.HTML(html)      
             
#获取图片地址
# // | 文档的任意位置 
# @属性名 | 选取属性名所对应的方法 
img_url = etree_html.xpath('//img/@src')
     
#判断是否存在文件夹picture,不存在则创建一个
if not os.path.exists('picture'):
    os.mkdir('picture')   


#下载图片并保存至指定位置
for img_list in img_url:  
    #replace()方法:str.replace(old, new[, max])
    #参数
    #old -- 将被替换的子字符串。
    #new -- 新字符串,用于替换old子字符串。
    #max -- 可选字符串, 替换不超过 max 次
    #替换图片清晰度
    img_list = img_list.replace('640x480','1920x1080')
    #print(img_list)
    #获取图片内容
    img = requests.get(img_list,headers=header).content
    number+=1
    print('正在下载第{}张图片'.format(number))
    
    img_name = 'picture\\{}.jpg'.format(number)
    with open(img_name,'wb') as save_img:
        #写入图片数据
        save_img.write(img)

要看好有没有路径

最后修改:2021 年 02 月 26 日 02 : 17 PM
如果觉得此文章有用,请随意打赏