600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python爬虫实战——轻松学会电脑桌面壁纸爬取

python爬虫实战——轻松学会电脑桌面壁纸爬取

时间:2019-02-03 02:21:19

相关推荐

python爬虫实战——轻松学会电脑桌面壁纸爬取

python——Requests

一、写在前面

本文所需要的python库有:requests、pyquery、os、time。为保证代码的运行请先安装好对应的python库。详细安装说明:

使用pip 安装 requests使用pycharm安装 requestspyquery 安装

二、项目讲解

本次我们需要使用到的网站为:/彼岸图网

效果展示

在这里我们爬取的内容有:图片的名字(保存图片的文件名),图片内容,并将他保存下来。

三、代码详解

import requestsfrom pyquery import PyQuery as pqimport osimport timefilename = "./data" #定义图片保存的位置base_url = '/' # 基础urlheaders = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36','referer': '/'} # 添加headers,防止网页反爬取def get_page(page):url = base_url + 'index_' + str(page) + '.html'response = requests.get(url, headers=headers)response.encoding = 'gbk'doc = pq(response.text)imgs = doc('.clearfix li a img')for img in imgs.items():yield {'url': img.attr('src'),"name": img.attr('alt')}def save_img(img):url = base_url + img['url']response = requests.get(url, headers=headers)path = filename + "/" + img['name'] + '.jpg'with open(path, 'wb') as f:f.write(response.content)f.close()if __name__ == "__main__":if not os.path.exists(filename):os.mkdir(filename)for page in range(1, 20):imgs = get_page(page)for img in imgs:save_img(img)time.sleep(1)print(page, 'has download!')

1、网页分析

首先,我们打开F12开发者模式(或者右键–>检查元素)

为了获得图片的详细信息,我们选中任意一张图片,获得其html网页代码。

从中我们可看见每一张图片的具体url都在<img>的src里面,因此我们只需要获得每个img,通过获取他的url便可以进行下载图片

为了获得更多的图片,我们再观察下一页的url。

可以发现,每个页面的url就是简单的:/+index_(page数).html。

所以有如下代码,我们将它封装在一个get_page()的函数中:

def get_page(page):url = base_url + 'index_' + str(page) + '.html'response = requests.get(url, headers=headers)response.encoding = 'gbk'doc = pq(response.text)imgs = doc('.clearfix li a img')for img in imgs.items():yield {'url': img.attr('src'),"name": img.attr('alt')}

这里,我们使用了pyquery来获得img元素,然后通过attr获得其属性值(名字,url地址)。

保存图片

def save_img(img):url = base_url + img['url']response = requests.get(url, headers=headers)path = filename + "/" + img['name'] + '.jpg'with open(path, 'wb') as f:f.write(response.content)f.close()

我们通过先前获得的名字来命名图片文件的名字,最后将它统一保存在./data文件夹中。

最后

if __name__ == "__main__":if not os.path.exists(filename):os.mkdir(filename)for page in range(1, 20):imgs = get_page(page)for img in imgs:save_img(img)time.sleep(1)print(page, 'has download!')

我们通过访问前20页的图片,将page用for循环遍历,最后通过调用之前的get_page()、save_page()函数,实现我们的彼岸图网的爬取。

相关资料

pyquery的使用图片的保存

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。