1、普通网页图片,如何抓取

要抓取普通网页上的图片,可以使用Python编写代码。以下是一个示例代码片段,可以帮助你了解如何开始编写此类代码:

```python
import requests
from bs4 import BeautifulSoup
import os

# 网页URL
url = 'https://example.com'

# 发送请求
response = requests.get(url)

# 创建BeautifulSoup对象
soup = BeautifulSoup(response.content, 'html.parser')

# 查找所有图像标签
img_tags = soup.find_all('img')

#create folder to save images in your current directory.
if not os.path.exists('images'):
    os.makedirs('images')

# 下载每张图片
for img_tag in img_tags:
    img_url = img_tag['src']
    if not img_url.startswith('http'):
        img_url = url + img_url
    
    #get the image name
    img_name = img_url.split('/')[-1]
    
    #save the image to your directory
    with open(f"images/{img_name}", "wb") as f:
        response = requests.get(img_url)
        f.write(response.content)
        
print('Images saved successfully.')
```

在这个简单的Python脚本中,我们使用requests库向指定的URL发送HTTP GET请求。然后,我们使用BeautifulSoup解析HTML响应,并使用find_all方法查找所有图片标记。之后我们遍历找到的链接,下载每个链接指向的图片,将它保存在 images 文件夹内。

2、网页图片延迟加载,如何抓取

如果网页中的图片是延迟加载,通常需要使用JavaScript来触发加载。因此,使用Python代码抓取这些图片可能会有所不同。可以考虑使用Selenium WebDriver库,这个库可以模拟浏览器行为,包括页面滚动和点击来触发图片加载。

以下是一个示例代码片段,可以帮助您开始编写此类代码:

```python
from selenium import webdriver
import urllib.request
import time

# 创建浏览器驱动,本教程是以Chrome作为浏览器示例
driver = webdriver.Chrome()
driver.get('https://example.com')

# 模拟滚动窗口以触发图像加载
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3) #等待3s以确保图像加载完全
    
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:    #没有发现新图像
        break
    last_height = new_height

# 查找并保存所有图像
img_srcs = [img.get_attribute('src') for img in driver.find_elements_by_tag_name('img')]
for src in img_srcs:
    filename = src.split('/')[-1]
    urllib.request.urlretrieve(src, filename)

print('Images saved successfully.')
driver.quit()
```

这个代码片段假设你已经抓取了需要捕获的延迟加载图片的HTML页面,并创建了一个Selenium Webdriver对象。然后,我们模拟了一个滚动窗口的操作,以此来触发图片的加载。使用 JavaScript 将页面滚动到底部,等待3秒钟,然后再次获取页面的 scrollHeight,如果发现高度发生了变化,则认为有新的图片加载,反复执行之 until 高度不再改变。

一旦所有需要捕获和保存的图像都被识别并可用,就可以通过使用 Python 库 urllib.request 的 urlretrieve() 方法将所有图像保存到本地文件系统中。

3、网页图片地址不存放在src属性中,如何抓取

如果网页图片的地址不在 `src` 属性中,可能在其他属性或者标签上,例如 CSS 样式表或者 JavaScript 脚本里。这种情况下,我们需要进一观察网页代码和文件来找到图片的详细信息。

以下是一些常见的图片地址存储方式及相应的抓取方法:

1) 图片地址存放在 `data-src`、`data-original`、`data-lazy-src` 等自定义属性中, 可以通过Beautiful Soup解析HTML文档,在页面中查找这些属性并获取属性值,进而获取这些图片的地址。

例如:
   ```python
   import requests
   from bs4 import BeautifulSoup
   import urllib.parse
   
   url = "https://example.com"
   response = requests.get(url)
   html_doc = response.text
   soup = BeautifulSoup(html_doc, 'html.parser')
   
   #查找存在"data-src"属性的img元素,并获取对应属性值
   imgs = soup.find_all('img', {'data-src': True})
   for img in imgs:
       img_url = img['data-src']
       #根据需要组合成完整的图片地址
       full_img_url = urllib.parse.urljoin(url, img_url)
       
       #下载图片
       img_data = requests.get(full_img_url).content
       with open('image_name.jpg', 'wb') as handler:
           handler.write(img_data)
   ```

2) 图片地址存放在CSS样式表背景图中。在此情况下,需要先解析HTML文件,然后通过解析CSS样式表文件,找到相关的样式规则及其对应的图片地址,最后再根据地址下载图片。

例如:

```python
   import requests
   from bs4 import BeautifulSoup
   import re
   
   url = "https://example.com"
   response = requests.get(url)
   html_doc = response.text
   soup = BeautifulSoup(html_doc, 'html.parser')
   
   #解析CSS文件,并查找背景图样式规则
   css_url = "https://example.com/style.css"
   css_response = requests.get(css_url)
   css_doc = css_response.text
   bg_urls = re.findall(r'url\((.*?)\)', css_doc)
   
   for bg_url in bg_urls:
       # 根据需要组合成完整的图片地址
       full_bg_url = urllib.parse.urljoin(url, bg_url.strip("'\""))
     
       # 下载图片
       img_data = requests.get(full_bg_url).content
       with open('image_name.jpg', 'wb') as handler:
           handler.write(img_data)
   ```

3) 图片地址可能在 JavaScript 脚本中动态生成。 一般情况下,我们可以通过分析 JavaScript 脚本代码找到图片地址及对应的数据格式,进而下载图片。

如果图片地址存放在其他地方或者有其它规律,可以类似以上方式进行查找和获取。总的来说,这种情况需要通过仔细观察HTML代码和文件,根据实际的情况进行逐步定位,最终实现下载图片的操作。

4、反爬虫网页图片,如何抓取

反爬虫技术是指网站为了防止爬虫程序访问和采集网页数据而采取的技术手段。其中,一些常见的反爬虫技术包括 IP 封禁、验证码识别、浏览器指纹识别、数据加密和隐藏等等。

针对反爬虫的网站,我们需要特别注意以下几点以提高抓取成功率:

1. 伪装请求头:网站可以通过 User-Agent 字段等信息判断请求是否为爬虫。因此在编写抓取代码时,可以设置一个常见的浏览器 User-Agent 来模拟用户的请求。

2. 使用代理IP:如果同一IP地址请求频繁,则会被网站识别为爬虫,此时可以使用代理IP来避免被封禁。

3. 破解验证码:部分网站使用了验证码来识别是否为人类访问,这种情况下需要使用机器学习等技术进行验证码识别,从而完成抓取。但是需要注意,法律法规或者网站协议中对于验证码的使用可能存在限制,因此在使用验证码识别之前需要先获取网站授权或者认真阅读协议。

下面是一个基于`requests`和`Pillow`库的抓取反爬虫网页的图片的示例代码:

```python
import requests
from PIL import Image
from io import BytesIO
from random import randint
import time

# 伪装请求头
headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}

# 使用代理IP
proxies = {"http": "http://127.0.0.1:1080", "https": "https://127.0.0.1:1080"}

# 网站URL
url = "https://example.com"

session = requests.Session()

# 访问网站
response = session.get(url, headers=headers, proxies=proxies)

# 解析出图片地址和验证码信息等内容
img_url = "https://example.com/image.jpg"
code_info = {'id': 'abcd1234', 'challenge': 'efgh5678'}

# 下载验证码图片,破解验证码
img_response = session.get(img_url, headers=headers, proxies=proxies, verify=False)
img = Image.open(BytesIO(img_response.content))
code = CRACK_THE_CAPTCHA(img) # 使用相关库或算法破解验证码,这里用"CRACK_THE_CAPTCHA"代替

# 构造提交的表单数据,包括验证码信息等
payload = {}
payload['id'] = code_info['id']
payload['code'] = code
payload['challenge'] = code_info['challenge']

# 提交表单
response = session.post(url, data=payload, headers=headers, proxies=proxies, verify=False)
time.sleep(randint(2,4)) # 随机等待一段时间,模拟人的行为

# 获取图片等信息
response = session.get(img_url, headers=headers, proxies=proxies, verify=False)
image_data = response.content
with open('image_name.jpg', 'wb') as handler:
    handler.write(image_data)

# 关闭 session
session.close()
```

上面的代码展示了如何使用代理、伪装请求头和破解验证码等技术应对常见的反爬虫手段,以实现成功抓取反爬虫网页的图片。需要注意的是,针对不同的反爬虫技术,需要采用不同的策略进行应对,因此在编写代码时需要综合考虑并根据实际情况进行相应的优化。

如何觉得直接开发太繁琐可使用一些现成的工具软件,可参考这篇文章:抓取网页图片项目的一些感悟_SF引流的博客-CSDN博客

如何抓取各种网页上的图片相关推荐

  1. python爬虫网页中的图片_Python爬虫爬取一个网页上的图片地址实例代码

    本文实例主要是实现爬取一个网页上的图片地址,具体如下. 读取一个网页的源代码: import urllib.request def getHtml(url): html=urllib.request. ...

  2. 用python爬取动态网页上的图片(百度图片)

    用python爬取动态网页上的图片(百度图片) 参考B站一个视频,视频链接: https://www.bilibili.com/video/BV1Va4y1Y7fK?share_source=copy ...

  3. 雪球python爬虫炒股_如何使用 Python 抓取雪球网页?

    我想使用beautifulsoup或者其他的python包 抓取 雪球网页上面的一些组合,因为雪球网的组合持仓变动的时候,雪球网不会给提示,比如说,我想抓取这个http://xueqiu.com/P/ ...

  4. python爬取网页停止_如何使用Python抓取雪球网页?

    我想使用beautifulsoup或者其他的python包 抓取 雪球网页上面的一些组合,因为雪球网的组合持仓变动的时候,雪球网不会给提示,比如说,我想抓取这个http://xueqiu.com/P/ ...

  5. java抓取网页数据_实现网络图片爬虫,只需5秒快速把整个网页上的图片全下载打包zip...

    我们经常需要用到互联网上的一些共享资源,图片就是资源的一种,怎么把网页上的图片批量下载下来?有时候我们需要把网页上的图片下载下来,但网页上图片那么多,怎么下载我们想要的东西呢,如果这个网页都是我们想要 ...

  6. 抓取网页上的图片(一)

    抓取网页上的图片 思路:网页(HTML)中的图片通常在img标签中,图片的链接通常在标签的src属性中,通过BeautifulSoup解析HTML,找到所有的img标签,获取每一个标签中的src的属性 ...

  7. 利用wget 抓取 网站网页 包括css背景图片

    利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...

  8. Python爬虫抓取指定网页图片代码实例

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 想 ...

  9. html 抓取移动,网页采集提取数据教程,以自定义抓取方式为例 - 八爪鱼采集器...

    网页上的数据类型十分丰富:文本.图片.链接.源码等.在数据采集过程中,不同类型的数据类型,对应的抓取方式是不同的.本文将讲解常见的数据类型与其抓取方式. 示例网址:https://movie.doub ...

最新文章

  1. Quartz-2D绘图之路径(Paths)详解
  2. 存储引擎之必知必会 -- 检查点机制
  3. Python实战应用-Clumper库函数全解析
  4. Android系统性能优化(66)---APK启动加速
  5. opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别
  6. Python程序的采样分析神器py-spy模块实践
  7. javascript:鼠标拖动图标技术
  8. 装饰器结构应用与基本使用(611)
  9. 投资:螺纹钢研究框架
  10. 动画程序时长缩放是什么意思_Premiere视频剪辑教程8:PR关键帧动画,让你的图片和文字动起来...
  11. 《搜索和推荐中的深度匹配》——1.5 近期进展
  12. Python-OpenCV-PS油画滤镜效果
  13. Aop简介 Aop术语 SpringAOP
  14. 【LaTex】第二行作者居中(IEEEtran模板)
  15. 常见的状态码及错误信息提示
  16. 网络原理——TCP协议
  17. 有哪些你看过五遍以上的电影?
  18. php 传递指针,windtear 追求完美
  19. ROS报错处理--1
  20. 神经网络如何告别黑箱,可解释?

热门文章

  1. 贪吃蛇游戏设计准备(实验准备)
  2. mysql 插入是否成功_PDO mysql:如何知道插入是否成功
  3. 卷积神经网络模型部署到移动设备
  4. PHP 打印支票,PHP_支票打印的日期大写问题Access2007,      财务人 - phpStudy
  5. Unity查看接入的Ironsource和adapter 版本号
  6. 了解递归:递归头、递归体
  7. html常用标签(下)
  8. 经络腧穴学-习题集-附答案
  9. amr格式音频转为mp3格式
  10. CMUcam5 Pixy:开源机器视觉传感器的使用