Bootstrap

【Python黑科技】免登陆爬虫一键下载知乎文章图片(保姆级图文+实现代码)


欢迎关注 『Python黑科技』 系列,持续更新中
欢迎关注 『Python黑科技』 系列,持续更新中

  • 仅供学习使用,本项目仅仅爬取下载一个网页下的图片内容,效果类似你打开一个知乎网页,把网页加载得到的图片保存下来,没有违法风险,仅仅作为一个爬虫学习的思路。

实现效果

得到图片
在这里插入图片描述
在这里插入图片描述


实现思路

通过selenium模拟打开网页,获取加载得到的图片url并把图片保存。

需要安装的库

import re
from selenium import webdriver
import time
import urllib.request

其中的selenium库需要配置谷歌浏览器驱动参考文章
配置selenium库的浏览器驱动,解决selenium.common.exceptions.SessionNotCreatedException 报错(保姆级图文)

测试能否使用selenium

# @Time    : 2022/1/15 16:32
# @Author  : 南黎
# @FileName: 测试能否使用selenium.py
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://blog.csdn.net/u011027547")

保存文件

将URL表示的网络对象复制到本地文件。

urllib.request.urlretrieve(content_list[n], local)
urllib.request.urlretrieve(url, filename)

  • url:外部或者本地url
  • filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
while n < len(content_list):
    i = time.time()
    local = (r"爬取到的图片/%s.jpg" % (i))#其实这里有个bug,把所有图片都保存为了jpg,gif动图也被保存为了jpg,但是不影响效果,还是gif
    urllib.request.urlretrieve(content_list[n], local)#把获取到的图片url和文件保存地址放入
    print("图片id:" + str(i))
    n = n + 1

实现代码

# @Time    : 2022/1/15 16:06
# @Author  : 南黎
# @FileName: 爬取知乎图片.py
import re
from selenium import webdriver
import time
import urllib.request

web_driver = webdriver.Chrome()#新建一个Chrome对象
# web_driver.maximize_window()#新打开的谷歌浏览器窗口最大化,注释掉的话只有半个窗口大小

url="https://zhuanlan.zhihu.com/p/457837506"
# url=input("请输入要爬取图片的知乎提问,文章网址:/n")#不注释这行代码可以自定义要爬取的网站

web_driver.get(url)#打开网址
i = 0
while i < 10:
    web_driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)
    try:
        web_driver.find_element_by_css_selector('button.QuestionMainAction').click()
        print("page" + str(i))
        time.sleep(1)
    except:
        break
result_raw = web_driver.page_source

content_list = re.findall("img src=\"(.+?)\" ", str(result_raw))#获取图片的url
n = 0

while n < len(content_list):
    i = time.time()
    local = (r"爬取到的图片/%s.jpg" % (i))#其实这里有个bug,把所有图片都保存为了jpg,gif动图也被保存为了jpg,但是不影响效果,还是gif
    urllib.request.urlretrieve(content_list[n], local)#把获取到的图片url和文件保存地址放入
    print("图片id:" + str(i))
    n = n + 1

总结

大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python黑科技!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-1-15

欢迎关注 『Python黑科技』 系列,持续更新中
欢迎关注 『Python黑科技』 系列,持续更新中
【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包exe】
【更多内容敬请期待】


;