随州公司做网站,深圳效果图公司排名,各大电商购物网站转化率报表,做网站贵不爬取图片的信息
爬取图片与爬取文本内容相似#xff0c;只是需要加上图片的url#xff0c;并且在查找图片位置的时候需要带上图片的属性。
这里选取了一个4K高清的壁纸网站#xff08;彼岸壁纸https://pic.netbian.com#xff09;进行爬取。
具体步骤如下#xff1a;
…爬取图片的信息
爬取图片与爬取文本内容相似只是需要加上图片的url并且在查找图片位置的时候需要带上图片的属性。
这里选取了一个4K高清的壁纸网站彼岸壁纸https://pic.netbian.com进行爬取。
具体步骤如下
第一步依然是进入这个页面这个壁纸网站分为好几种类型的壁纸图片点击一个你想要爬取的类型然后按F12从中获取URL和请求方式复制URL会用到这次就不用网页的User-Agent’了用pycharm包中别人写好的。 然后发送我们的请求并获取这个网页的数据
# url
url https://pic.netbian.com/4kmeinv/
# UA伪装 用下载好的库中别人写好的UA
head {User-Agent: fake_useragent.UserAgent().random}
# 发送请求
response requests.get(url, headershead)
# 获取想要的数据
res_text response.text第二步打开元素栏用左上角的寻找工具放在图片上定位到元素栏中对应的标签用数据分析的方法获取到图片信息。 其实每一张图片的排放就好像是一个个列表其所有的信息都粗存在元素栏中的li标签中我们想要获取多张照片首先需要先将这些li标签都获取下来。
# 数据解析 获取所有的li标签并存放在li_list中
tree etree.HTML(res_text)
li_list tree.xpath(//div[classslist]/ul/li)第三步获取图片与获取文本内容不同的是需要再获取图片的url图片的url就在上图箭头所指的位置但是这个仅仅只是图片在这个板块的位置所以前面需要在前面加上这个壁纸网站的地址这样获取的图片信息才是完整的可以被打开。 因为先前已经将存放图片信息的li标签都存放在了li_list中所以我们就用for循环遍历这个列表以便获取更多的图片信息。 for li in li_list:# 图片的urlimg_url https://pic.netbian.com .join(li.xpath(./a/img/src))# 发送请求img_response requests.get(img_url, headershead)# 获取想要的数据img_content img_response.content第四步将获取到的图片存放在文件夹中
# pic_name 0 这次的代码封装在函数中将这个变量放在了函数外面给获取的图片编号
# 将pic_name定义为全局变量方便调用
global pic_namewith open(f./picLibbb/{pic_name}.jpg, wb) as fp:fp.write(img_content)pic_name 1第五步为了获取更多的照片因为每一页能展示的照片有限所以我们需要for循环遍历每一页的网址 每一页的网址都只是在页面数量上的差别所以可以遍历。
第一页的网址 第二页的网址 第三页的网址 url https://pic.netbian.com/4kmeinv/request_pic(url)for i in range(1,10):next_url fhttps://pic.netbian.com/4kmeinv/index_{i}.htmlrequest_pic(next_url)完整代码
# 获取图片数据
import os.path
import fake_useragent
import requests
from lxml import etree# UA伪装
head {User-Agent: fake_useragent.UserAgent().random}pic_name 0
def request_pic(url):# 发送请求response requests.get(url, headershead)# 获取想要的数据res_text response.text# 数据解析tree etree.HTML(res_text)li_list tree.xpath(//div[classslist]/ul/li)for li in li_list:# 图片的urlimg_url https://pic.netbian.com .join(li.xpath(./a/img/src))# 发送请求img_response requests.get(img_url, headershead)# 获取想要的数据img_content img_response.contentglobal pic_namewith open(f./picLib/{pic_name}.jpg, wb) as fp:fp.write(img_content)pic_name 1if __name__ __main__:# 创建存放照片的文件夹if not os.path.exists(./picLib):os.mkdir(./picLibbb)# 网站的urlurl https://pic.netbian.com/4kdongman/request_pic(url)for i in range(1,10):next_url fhttps://pic.netbian.com/4kmeinv/index_{i}.htmlrequest_pic(next_url)爬取后的效果如下