当前位置: 首页 > news >正文

全国各城市疫情高峰感染高峰进度合肥优化排名推广

全国各城市疫情高峰感染高峰进度,合肥优化排名推广,windows.net做网站,外汇做单记录做单专业网站有哪些python爬虫12:实战4 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好…

python爬虫12:实战4

前言

​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。

申明

​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好影响。

目录结构

文章目录

    • python爬虫12:实战4
      • 1. 目标
      • 2. 详细流程
        • 2.1 目标确定
        • 2.2 请求网页
        • 2.3 模拟滑动滚轮
        • 2.4 下载图片
        • 2.5 完整代码
      • 3. 总结

1. 目标

​ 这次爬虫实战,采用的库为:selenium,这次就以那种动态加载的图片网页为目标,本次的网站就是家大业大的百度图片。

再次说明,案例本身并不重要,重要的是如何去使用和分析,另外为了避免侵权之类的问题,我不会放涉及到网站的图片,希望能理解

2. 详细流程

2.1 目标确定

​ 写爬虫第一件事情,就是确定目标网页地址。这里,我们的目标是百度图片,因此直接打开百度图片搜索美女,然后观察它的url:

https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwxLDMsMiw0LDUsLDYsOCw3LDk%3D&word=美女

​ 这个链接非常的长,因为它有很多无关的参数,所以我们第一件事情就是化繁为简,大胆的删除一些无关参数(之前讲解过参数形式都是&xxx=value),得到结果如下:

https://image.baidu.com/search/index?tn=baiduimage&word=美女

​ 另外,观察这个网页,你会发现:随着滚轮往下滚,图片越来越多。这就是动态网页,也是我们常用的requests库难以处理的场景,这同样告诉我们使用selenium这个库。

2.2 请求网页

​ 这部分就是中规中矩了,看过前面关于selenium 讲解的应该都可以轻松写出来。

​ 代码如下:

# 请求百度图片
def get_baidu_images():# 初始化driver = webdriver.Chrome()# 网址base_url = 'https://image.baidu.com/search/index?tn=baiduimage&word='target = input('请输入想要下载的图片名字:')url = base_url + target# 请求driver.get(url)

2.3 模拟滑动滚轮

​ 本次代码有很多实现思路,我这里想的是:首先,滚轮滚动一定距离,然后获取图片的下载地址,接着询问是否还需要滚动,如果不,则停止加载,开始下载图片,否则继续滚动

​ 想要实现滚动,需要执行js代码。肯定有些人没有学习过,没关系,虽然我学过的,但是也已经忘得差不多了。

​ 所以,我们直接百度js代码实现滚动条向下滚动,即可找到js代码如下:

window.scrollBy(0,100)
# 这个是移动多少的距离,即每次移动100像素

​ 那么,可以来写代码了,如下:

#( 接着上面的函数写的 )
# 是否滚动
flag = True
while flag:# 先让滚动条滚动五次.每次间隔0.5秒,给浏览器一定的加载时间for i in range(5):driver.execute_script('window.scrollBy(0,300)')time.sleep(0.5)# 询问是否继续滚动decision = input('是否继续滚动(Y/N):')if decision == 'N':flag = False

​ 给大家展示一下运行效果:

在这里插入图片描述

​ 可以看出,没有什么问题,那么继续,下一步就是解析网页,获取所有的图片链接。

​ 首先,看下图:

在这里插入图片描述

​ 我们可以通过xpath来解析代码:

//div[@class="imgbox-border"]//img

​ 那么,代码如下:

# (接着上面写)
# 解析
img_list = driver.find_elements(by=By.XPATH,value='//div[@class="imgbox-border"]//img')
href = [img.get_attribute('src') for img in img_list]
# 退出
driver.close()
return href

​ 运行结果如下图所示:

在这里插入图片描述

2.4 下载图片

​ 最后一步,就是下载图片,我们可以重新写一个函数来实现。

​ 下载图片很简单,流程就是:

1. 请求图片网址
2. 获取图片源码
3. 将图片以二进制的形式写入文件即可

​ 但是,这里需要注意,不能使用selenium去请求图片,不然你相当于打开了图片所在的网页,并没有真正的打开图片,建议还是使用requests去访问

​ 代码如下:

# 下载图片
def download_image(url,index):''':param url: 下载图片的链接:param index: 索引,用于文件名'''# 参数headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',}# 请求response = requests.get(url,headers=headers)source_code = response.content# 保存到文件with open('image'+str(index)+'.jpg','wb') as f:f.write(source_code)

​ 运行结果如下:

在这里插入图片描述

2.5 完整代码

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import requests# 请求百度图片
def get_baidu_images():# 初始化driver = webdriver.Chrome()# 网址base_url = 'https://image.baidu.com/search/index?tn=baiduimage&word='target = input('请输入想要下载的图片名字:')url = base_url + target# 请求driver.get(url)# 是否滚动flag = Truewhile flag:# 先让滚动条滚动五次.每次间隔0.5秒,给浏览器一定的加载时间for i in range(5):driver.execute_script('window.scrollBy(0,300)')time.sleep(0.5)# 询问是否继续滚动decision = input('是否继续滚动(Y/N):')if decision == 'N':flag = False# 解析img_list = driver.find_elements(by=By.XPATH,value='//div[@class="imgbox-border"]//img')href = [img.get_attribute('src') for img in img_list]# 退出driver.close()return href# 下载图片
def download_image(url,index):''':param url: 下载图片的链接:param index: 索引,用于文件名'''# 参数headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',}# 请求response = requests.get(url,headers=headers)source_code = response.content# 保存到文件with open('image'+str(index)+'.jpg','wb') as f:f.write(source_code)if __name__ == '__main__':url_list = get_baidu_images()for i,url in enumerate(url_list):download_image(url,i)

3. 总结

​ 本篇讲解了selenium的主要用途,处理动态网页。另外告诉了大家如何使用selenium执行js代码,还有一点就是如何爬取图片并保存到本地。

http://www.shuangfujiaoyu.com/news/30034.html

相关文章:

  • 做网站开发的有哪些公司好全网整合营销推广方案
  • 做网站 天津seo常用的优化工具
  • 如何给网站做301跳转万秀服务不错的seo推广
  • 顺义广州网站建设什么是seo搜索
  • 江都网站建设近期新闻热点
  • 河南网站制作公司哪家好东莞网络科技公司排名
  • 美女图片用网站源码模板建站常规流程
  • 用动物做网站名称线上营销工具
  • 上海大型网站开发公司免费网页设计制作网站
  • 公司做网站算什么费用网络营销中的seo是指
  • 杭州e时代互联网站建设百度企业官网
  • 数据库与网站建设重庆网络推广公司
  • 网站服务类型怎么选济南seo网站排名关键词优化
  • 网络公司如何开网站网络推广网站排行榜
  • c2c网站管理系统下载百度排行
  • window2008 网站建设营销软件有哪些
  • 一键wordpress建站网站服务器查询
  • 使用本地主机做网站百度主页入口
  • python做网站源码51趣优化网络seo工程师教程
  • jsp做网站遇到的问题seo综合查询软件排名
  • 网站建设文化价格全国seo公司排名
  • 深圳公司网站建设设计如何给自己的公司建网站
  • 常见的网站空间服务商360竞价推广开户多少钱
  • 桂平网站设计seo工作室
  • 如何自己做网站 开直播seo有哪些优缺点?
  • 建设网站审批手续建网站seo
  • 惠州建站方案百度手机app
  • php 可以自己做网站吗seo专业培训班
  • sae wordpress 安装主题福州seo快速排名软件
  • 上海企乐网站制作公司关键字搜索