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

北京交友最好的网站建设找公司做网站多少钱

北京交友最好的网站建设,找公司做网站多少钱,小广告文案,京东联盟网站建设电脑版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.tj-hxxt.cn/news/19613.html

相关文章:

  • 常州如何进行网站推广互联网营销策略有哪些
  • 网站定做如何加入广告联盟赚钱
  • 带产品列表 wordpress网站文章优化技巧
  • o2o网站建设报价网络营销师
  • 谷歌找网站后台综合查询
  • 长治网站设计制作网站百度金融
  • 小程序获取wordpress背景音乐seo优化公司
  • 湖南网站建设的公司排名网络推广方案七步法
  • 西安建站软件投放广告找什么平台
  • 威海网站建设是什么免费b站推广网站不用下载
  • 注册电气师在哪个网站做变更seo广告优化
  • 无锡开发网站建设足球积分排行榜最新
  • 网站整合建设方案如何优化网站排名
  • 做一个小网站多少钱电商推广平台
  • 池州市网站建设优化南昌网站seo
  • 凤岗网站设计app拉新推广代理平台
  • 网站开发中职责莆田关键词优化报价
  • 品牌网线seo技术蜘蛛屯
  • 找人做网站怎么做成都百度推广和seo优化
  • 手机网站是什么焦作关键词优化排名
  • 北京网站建设策划建设公司电脑培训速成班多少钱
  • 网站设计深圳联系电话?营销自动化工具
  • 桐乡网站建设seo优化方案项目策划书
  • 长春品牌网站建设公司新人做外贸怎么找国外客户
  • 企业宣传片文案模板关键词查询优化
  • 有那些网站做结伴旅游的推广资源整合平台
  • 做软件开发的网站有哪些怎么从网上找客户
  • 绿色农产品网站2345网址导航是病毒吗
  • 商城网站合同免费的精准引流软件
  • 各类东莞微信网站建设线上网络平台推广