python 网络爬虫 爬取图片

运行了您的爬虫图片代码(https://blog.csdn.net/xiangxueerfei/article/details/131831469?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-131831469-blog-131214432.235%5Ev38%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-131831469-blog-131214432.235%5Ev38%5Epc_relevant_anti_t3_base&utm_relevant_index=5%EF%BC%89%EF%BC%8C

报错:

img


import requests
import os
def get_img(url, path):
    response = requests.get(url)
    if response.status_code == 200:
        with open(path, 'wb') as f:
            f.write(response.content)
def download_imgs(urls, dir_path):
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
    for index, url in enumerate(urls):
        path = os.path.join(dir_path, f'{index}.jpg')
        get_img(url, path)
if __name__ == '__main__':
    urls = ['https://example.com/image1.jpg', 'https://example.com/image2.jpg']
    dir_path = './imgs'
    download_imgs(urls, dir_path)

很抱歉,无法查看您的链接。不过,针对Python网络爬虫爬取图片的问题,以下是一个示例代码:

import requests
import os

def get_img(url, path):
    response = requests.get(url)
    if response.status_code == 200:
        with open(path, 'wb') as f:
            f.write(response.content)

def download_imgs(urls, dir_path):
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
    for index, url in enumerate(urls):
        path = os.path.join(dir_path, f'{index}.jpg')
        get_img(url, path)

if __name__ == '__main__':
    urls = ['https://example.com/image1.jpg', 'https://example.com/image2.jpg']
    dir_path = './imgs'
    download_imgs(urls, dir_path)

其中,get_img函数用于下载单张图片,download_imgs函数用于下载多张图片并保存到指定目录下。调用示例代码中的download_imgs函数即可将指定URL的图片下载至指定目录下。请注意,某些网站可能存在反爬机制,需要添加相应的请求头和代理等操作。

引用 皆我百晓生 小程序回复内容作答:
您遇到的错误是由于urllib3库的版本不兼容而引起的。根据错误提示,urllib3库的v2.0版本只支持编译了OpenSSL 1.1.0i 14 &ug 2018的ssl模块,可能由于ssl模块版本不匹配而导致错误。

解决这个问题的一种方法是升级urllib3库的版本。可以尝试使用以下命令升级:

pip install --upgrade urllib3

如果升级urllib3库后仍然遇到问题,请确保ssl模块的版本与urllib3库的要求一致。可以尝试升级ssl模块:

pip install --upgrade urllib3[secure]

如果以上解决方法无效,还可以尝试重新安装Python,并确保安装了最新版本的Python和相关库。

希望能帮到您!如果还有其他问题,请随时提问。

使用的urllib3库版本与ssl模块的OpenSSL版本不兼容就会有这个问题,升级urllib3库到支持您当前Python版本的最新版本就好了,或者回退版本

你这项目用到的urllib2包不再兼容你其他的依赖包了,需要解决请回1

【以下回答由 GPT 生成】

抱歉,你没有提供关于报错信息的任何内容,因此无法根据你的描述给出具体的解决方案。请提供完整的报错信息,包括错误消息、堆栈跟踪和任何相关的提示信息,以便我们更好地理解问题并为你提供帮助。

如果你没有报错信息,但是遇到了具体的问题,请提供更多的详细信息,让我能够理解你遇到的具体问题,并为你提供解决方案。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

需要更新urllib,看你代码里面用了request,你直接更新request吧,

pip install -U requests

1、解释说明:
Python爬虫是一种通过编写程序自动从互联网上获取信息的技术。在爬取图片方面,我们可以使用Python的第三方库如requests和BeautifulSoup来实现。首先,我们需要使用requests库发送HTTP请求以获取网页内容,然后使用BeautifulSoup库解析HTML代码,找到图片的URL。最后,我们可以再次使用requests库下载图片并保存到本地。

2、使用示例:
以下是一个简单的Python爬虫示例,用于爬取网页上的图片并保存到本地。

import os
import requests
from bs4 import BeautifulSoup

def download_image(url, save_path):
    response = requests.get(url, stream=True)
    with open(save_path, 'wb') as f:
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:
                f.write(chunk)

def crawl_images(url, save_dir):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    img_tags = soup.find_all('img')

    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    for img_tag in img_tags:
        img_url = img_tag.get('src')
        img_name = os.path.basename(img_url)
        save_path = os.path.join(save_dir, img_name)
        download_image(img_url, save_path)
        print(f'下载完成:{img_name}')

if __name__ == '__main__':
    url = 'https://www.example.com'  # 替换为你想要爬取的网页URL
    save_dir = 'images'  # 保存图片的文件夹
    crawl_images(url, save_dir)

3、注意事项:

  • 请遵守网站的robots.txt规则,不要对网站造成过大的访问压力。
  • 下载图片时,可能会遇到动态加载的情况,这时需要分析网页的JavaScript代码,找到图片的真实URL。可以使用Selenium等工具来处理这种情况。

结合GPT给出回答如下请题主参考
好的,以下是一个简单的Python网络爬虫案例,用于爬取指定网站的图片,并将图片下载到本地:

import requests
import os

# 定义函数,用于获取目标网页中的图片链接
def get_image_urls(url):
    response = requests.get(url)
    content = response.text
    image_urls = []
    start_index = 0
    while True:
        start_index = content.find('<img', start_index)
        if start_index == -1:
            break
        end_index = content.find('>', start_index)
        if end_index == -1:
            break
        img_html = content[start_index:end_index]
        src_index = img_html.find('src="')
        if src_index == -1:
            start_index = end_index
            continue
        src_index += 5
        src_end_index = img_html.find('"', src_index)
        if src_end_index == -1:
            start_index = end_index
            continue
        img_url = img_html[src_index:src_end_index]
        image_urls.append(img_url)
        start_index = end_index
    return image_urls

# 定义函数,用于下载图片到本地
def download_image(image_url, save_folder):
    response = requests.get(image_url)
    image_name = image_url.split('/')[-1]
    save_path = os.path.join(save_folder, image_name)
    with open(save_path, 'wb') as f:
        f.write(response.content)

# 定义爬虫函数
def spider(url, save_folder):
    image_urls = get_image_urls(url)
    for image_url in image_urls:
        download_image(image_url, save_folder)

# 测试
url = 'https://www.example.com'
save_folder = './images'
spider(url, save_folder)

在这个案例中,我们首先定义了一个get_image_urls函数,用于获取目标网页中的图片链接。该函数通过发送一个GET请求来获取网页内容,然后使用字符串查找方法来从网页源码中找到所有图片的URL地址。

接着,我们定义了一个download_image函数,用于下载图片到本地。该函数使用Python内置的open函数打开一个文件,然后使用requests库的get方法获取图片内容,并将内容写入该文件中。

最后,我们定义了一个spider函数,用于控制整个爬虫的流程。该函数先使用get_image_urls函数获取目标网页中所有的图片链接,然后遍历这些链接,使用download_image函数下载每个图片并存储到指定的本地文件夹中。

在测试中,我们只需要指定目标网页的URL和本地存储图片的文件夹路径,然后调用spider函数即可。


import requests
from bs4 import BeautifulSoup
import time

header = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51"
}

def down1():
    for i in range(1, 3):
        url = "https://699pic.com/originality-0-176-" + str(i) + ".html"
        down2(url)

def down2(neirong):
    r = requests.get(neirong, headers=header)
    r.encoding = "utf-8"  #r.apparent_encoding
    print(r.status_code)
    demo = r.text
    # print(demo) #查看网页的内容
    down3(demo)

def down3(biaoqian):
    soup = BeautifulSoup(biaoqian, "html.parser")
    tags = soup.find_all("img", class_="lazy")
    print(len(tags)) 查看找到的标签数量#
    # print(tags) #查看标签内容
    for tag in tags:
        image = "https:" + tag["data-original"]
        print(image)
        down4(image)

def down4(shuchu):
    print(time.time())
    fileName = "image/" + str(int(time.time() * 1000)) + ".jpg"
    r = requests.get(shuchu, headers=header)
    f = open(fileName, "wb")
    f.write(r.content)
    f.close()

if __name__ == "__main__":
    down1()

用requests库(2.31.0验证)代码没啥问题
分析思路:可能是第三方库requests的版本影响。
相关的更新指令如下

pip install requests==2.31.0