python爬取必应壁纸
前言
需要用到requests
和lxml
库
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)
[scode type="yellow"]要看好有没有路径[/scode]