python爬取有妖气漫画
发布日期:2021-05-10 23:12:05 浏览次数:18 分类:精选文章

本文共 2028 字,大约阅读时间需要 6 分钟。

为了帮助您爬取动态加载的图片内容,我们需要使用Selenium和PhantomJS等工具。以下是详细的步骤和方法:

准备工具

首先,安装所需的库:

pip install selenium

下载PhantomJS(推荐使用Chrome或Firefox的Headless版本,PhantomJS已被弃用):

  • Chrome:` Moff具体下载地址:https://phantomjs.org/download.html 或者访问 Firefox 的Headless版本:https://github.com/detro/phantomjs/wiki

设置环境变量

在命令提示符中,设置PhantomJS的路径:

export PATH=$PATH:/path/to/phantomjs-2.1.1-windows/bin/

编写爬取脚本

以下是一个示例脚本:

from selenium import webdriver# 使用Headless Chrome(建议)driver = webdriver.Chrome(executable_path='D:/chromedriver-100.exe')# 指定User-Agent(可 Wrath Optionally)options = {    "headless": True,    "accept_languages": ["zh-CN"],    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4682.16 Safari/537.36"}driver.get(url)# 解析页面内容soup = BeautifulSoup(driver.page_source, 'html.parser')# 提取图片数据result = soup.find_all('img', class_='image_cache loading')pic_list = []for img in result:    if 'data-src' in img.attrs:        src = img['src']        if 'data-src' not in pic_list:            pic_list.append(src)# 下载图片count = 1for src in pic_list:    # 设置请求头(如需要)    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4682.16 Safari/537.36'    }    response = requests.get(src, headers=headers)    file_name = f'Z-H-J-{count}.jpg'    file = open(file_name, 'wb')    file.write(response.content)    count += 1

处理注意事项

  • 动态加载内容:部分网站会通过JavaScript加载图片,这些图片可能存在于data-src或其他动态属性中。
  • 异常处理:脚本可能会遇到网络限制、JavaScript无法解析等问题,可在代码中添加异常捕获机制。
  • 图片质量问题:部分图片会被压缩或转化为Base64编码,需对源图片进行解码。
  • 会员墙问题:如果网站是会员墙或需要登录的,需上手处理Cookie或Session variables。
  • 替代方案

    如果PhantomJS出现兼容性问题,可以选择以下方案:

    • 使用Selenium的Headless Chrome/Chrome:

      from selenium import webdriver# Chrome的BS Headless版本driver = webdriver.Chrome(options={    'headless' : True,    'chromium': {        'download.default_downloads' : None    }})
    • 使用Selenium的Headless Firefox:

      from selenium import webdriverdriver = webdriver.Firefox(options={    'headless' : True})

    通过以上方法,您可以成功地爬取动态加载的图片内容。记住,总是需要根据实际需求调整脚本参数和处理方式。

    上一篇:Flask遇到的问题
    下一篇:Linux 报错bash: pip: command not found

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年04月25日 19时16分10秒