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

老司机要开车啦!


正所谓每一个学习 Python 爬虫的程序员都有一颗想开车的内心,小编当然也不另外,今天小编将带你上车去知乎上溜达溜达,看看有没有好看的小姐姐,果然不出所料,发现了大量漂亮的小姐姐,那么多好看的长腿小姐姐怎么才能方便到本地随时浏览呢,于是小编抱着纯洁的学术研究心态,发动了自己的车子啦!


确定目标URL:


这是知乎上一个问题链接关于 腿长是一种什么体验?


https://www.zhihu.com/question/28481779


需要的库:


如果不清楚怎么安装的话,请自行百度,Google, 我这里就不再详细介绍了。


from selenium import webdriver
import time
import requests
from bs4 import BeautifulSoup
import html.parser


模拟滚动到底端:


因为知乎上面的文章,是需要手动滑到文章末尾触发进行再次加载的,所以我们这里需要用到 Selenium 模拟人工进行触发更多的信息加载,详细请看代码中的解释!


driver = webdriver.Chrome() # 打开 Chrome 浏览器
driver.get("https://www.zhihu.com/question/28481779"# 打开指定的 URL
for i in range(5):# 向下滑动触发内容加载,5 代表的是触发次数,也可以写成一个函数的形式
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight);"#滑动到浏览器底部,触发加载信息
   time.sleep(3) #等待页面加载时间


解析网址:


这是我们爬取过程中非常重要的一部分,首先我们进行网页的分析,结果发现每一个图片附近都会有一个 <noscript> 的 node,里面包含了高清原图的URL。我们的做法是直接将 <noscript> 爬取下来,仔细观察,你会发现每个 <noscript> 的 <> 都是被 escape(HTML entity 转码)了的,所以我们需要用到 html.parser.unescape 进行解码,详细请看代码中的解释。


source = driver.page_source  # 原网页中 HTML 信息
soup = BeautifulSoup(source,'lxml'# 使用 BeautifulSoup 进行解析
data_in = soup.find_all('noscript'# 找到所有的 <noscript>
data_inner_all = "" #存储全部的 <noscript> 中的 text ,方便之后的解析
for data in data_in:
   data_inner = data.get_text() # 获取 <noscript> 的 text 内容
   data_inner_all += data_inner + "\n"
data_all = html.parser.unescape(data_inner_all) # 将解码成 HTML ,类似于这样 data_all = '<abc>'


保存图片:


接下来就是我们最期待的保存图片了,我们将 HTML 中的 src 全部保存到本地文件夹中,方法很简单,详细请看代码中的解释!


img_soup = BeautifulSoup(data_all,'lxml'# 再次解析 HTML 
imgs = img_soup.find_all('img'# 找到所有的 img 
count = 0  # 用来标记图片数量及作为名字
for img in imgs: # 保存所有的图片
   if img.get('src'is not None# 判断是否包含图片的 url 
       img_url = img.get('src')
       with open('/Users/lec/Desktop/img/' + str(count) + '.jpg','wb+'as f: #保存图片到本地
           f.write(requests.get(img_url).content)
           count += 1
print("Intall images successfully!!!"# 保存成功!


成果展示:


全都是知乎上的大长腿姐姐,如果你有喜欢其他类型的小姐姐,还可以再去溜达溜达的哟,方法已经教给你啦!(图片如有侵权,联系删除!)



文章参考:https://zhuanlan.zhihu.com/p/28680797


完整的代码我已经上传到 Github 上了,点击阅读原文即可跳转!


PS: 1、之前自己准备爬取的代码总是只能获取到问题中第一个答案的图片,参考了上面这篇文章才爬取成功的勒,如果有更好的办法欢迎一起学习交流的,同时各位读者也要注意自己的身体蛤!

2、感觉好久没有更新文章了,实在是自己最近要准备考试了比较忙,希望各位读者海涵的!

3、小编在这里祝大家端午节快乐,同时远在异乡的朋友们,今天记得给家里的父亲打个电话哟!



如果觉得文章还不错的话,还请大家点赞分享下。算是对「fightjiang」最大的支持!



       每 天 分 享 Python 干 货

       


http://www.taodudu.cc/news/show-6310413.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 开车,开车!!!
  • 你为什么喜欢开车?
  • dmesg介绍
  • Linux--常用命令--dmesg
  • dmesg命令手册
  • dmesg 命令详解
  • linux dmesg命令参数及用法详解
  • linux命令之-dmesg详解
  • dmesg命令用法
  • Linux 系统设置 : dmesg 命令详解
  • dmesg七种用法
  • Linux命令:dmesg
  • dmesg的详细用法
  • linux命令--dmesg
  • 图解Linux命令之--dmesg命令
  • 2023年JAVA JDK8的安装与配置(附JAVA8安装包)
  • java-jdk下载及安装
  • Java软件包安装
  • java程序打包一体化:代码-jar-exe-安装包(图文详解、资源提供)
  • 把java项目打包成安装包,在windows下安装
  • java中jdk的下载与安装
  • 把java项目打包成安装包
  • java安装教程(解决官网下载的安装包为什么没有jre?)
  • 阿里云ACP ACE认证考试重要事项
  • 树莓派呼吸灯python代码
  • pyboard呼吸灯代码分享
  • esp32 + python 呼吸灯实现
  • Python| GUI界面进行抽奖
  • 1.python网页设计,点击按键显示对话窗口
  • 【python】简单使用selenium编写无界面谷歌浏览器的网页登录和签到功能