首页 > 编程语言 >使用Python爬取京东商品图片的代码实现

使用Python爬取京东商品图片的代码实现

时间:2024-06-11 22:31:29浏览次数:23  
标签:img get Python 爬虫 response 爬取 url 京东 requests

在数据驱动的商业环境中,网络爬虫技术已成为获取信息的重要手段。京东作为中国领先的电商平台,拥有海量的商品信息和图片资源。本文将详细介绍如何使用Python编写爬虫程序,爬取京东商品的图片,并提供完整的代码实现过程。

爬虫基础

在开始编写爬虫之前,需要了解一些基本的网络爬虫概念:

  • HTTP请求:爬虫通过发送HTTP请求获取网页数据。
  • HTML解析:解析返回的HTML文档,提取所需信息。
  • 会话管理:使用Session保持登录状态和Cookies。

环境准备

  • Python:编程语言。
  • Requests:发送HTTP请求。
  • BeautifulSoup:解析HTML文档。
  • Lxml:解析库,BeautifulSoup的后端解析器。

安装所需库:

pip install requests beautifulsoup4 lxml

爬虫实现步骤

1. 设置请求头和代理

为了避免被识别为爬虫,需要设置User-Agent和代理IP。

import requests
from bs4 import BeautifulSoup

# 代理服务器配置
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

# 构建包含代理服务器认证信息的代理URL
proxy_url = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"

# 请求头,包含User-Agent
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

# 使用代理的requests会话
session = requests.Session()
session.headers.update(headers)

# 配置代理,支持HTTP和HTTPS
session.proxies = {
    'http': proxy_url,
    'https': proxy_url
}

# 示例使用会话对象发送请求
def get_page(url):
    try:
        response = session.get(url)
        response.raise_for_status()  # 检查请求是否成功
        return response.text
    except requests.exceptions.HTTPError as errh:
        print(f'HTTP Error: {errh}')
    except requests.exceptions.ConnectionError as errc:
        print(f'Error Connecting: {errc}')
    except requests.exceptions.Timeout as errt:
        print(f'Timeout Error: {errt}')
    except requests.exceptions.RequestException as err:
        print(f'OOps: Something Else: {err}')

# 使用get_page函数获取网页内容
# html_content = get_page('http://example.com')
2. 发送请求

使用Requests库发送GET请求。

def get_page(url):
    response = requests.get(url, headers=headers)
    return response.text
3. 解析HTML

使用BeautifulSoup解析HTML,提取商品图片链接。

def parse_page(html):
    soup = BeautifulSoup(html, 'lxml')
    img_tags = soup.find_all('img')
    img_urls = [img.get('data-src') for img in img_tags if 'data-src' in img.attrs]
    return img_urls
4. 保存图片

下载并保存图片到本地。

def save_images(img_urls, folder='images'):
    for i, url in enumerate(img_urls):
        try:
            response = requests.get(url, stream=True)
            if response.status_code == 200:
                with open(f'{folder}/img_{i}.jpg', 'wb') as f:
                    for chunk in response.iter_content(1024):
                        f.write(chunk)
            else:
                print(f'Failed to download image: {url}')
        except Exception as e:
            print(f'Error occurred while downloading image {url}: {e}')
5. 主函数

整合以上步骤,实现爬取京东商品图片的功能。

def crawl_jd(keyword):
    search_url = f'https://search.jd.com/Search?keyword={keyword}&enc=utf-8'
    html = get_page(search_url)
    img_urls = parse_page(html)
    save_images(img_urls)

if __name__ == '__main__':
    crawl_jd('笔记本电脑')

注意事项

  • 遵守robots.txt:在爬取前,检查目标网站的robots.txt文件,确保爬虫行为符合规定。
  • 请求频率控制:避免过快发送请求,以免给服务器造成负担。
  • 异常处理:代码中应包含异常处理逻辑,确保程序稳定运行。

作者:小白学大数据
链接:https://juejin.cn/post/7379042209788379151

标签:img,get,Python,爬虫,response,爬取,url,京东,requests
From: https://blog.csdn.net/weixin_48612224/article/details/139610154

相关文章

  • python安装库失败问题解决
    相信很多小伙伴在安装python软件包时候会遇到各种各样的报错吧,为此针对这些问题我进行了汇总并解决。 此时,使用cmd,pipinstall--相应包名称  这里需要升级一下pip,python.exe-mpipinstall--upgradepip然后按照操作一步步就可以解决咯。 ......
  • python栈帧沙箱逃逸
    python栈帧沙箱逃逸一、生成器生成器(Generator)是Python中一种特殊的迭代器,它可以通过简单的函数和表达式来创建。生成器的主要特点是能够逐个产生值,并且在每次生成值后保留当前的状态,以便下次调用时可以继续生成值。这使得生成器非常适合处理大型数据集或需要延迟计算的情况。......
  • Python中的协程
    1.引言在现代软件开发中,处理高并发任务已成为常态。Python,作为一种广泛使用的高级编程语言,提供了强大的并发模型,其中协程是关键组件。本文将深入探讨Python中的协程,从基础概念到高级应用,以及它们在实际开发中的使用。2.协程的基本概念在深入探讨Python协程之前,我们需要......
  • 【办公自动化】Python中的BeautifulSoup
    Python中的BeautifulSoup简介BeautifulSoup是一个Python库,用于解析HTML和XML文档。它可以将复杂的HTML文档转换为树形结构,使得我们可以轻松地提取所需的信息。BeautifulSoup支持多种解析器,如html.parser、lxml和html5lib等。本文将介绍BeautifulSoup的基本用法和一些常用功能。......
  • 学会python——文本分词(python实例一)
    目录1、认识Python2、环境与工具2.1python环境2.2pycharm编译3、对文本进行分词3.1代码构思3.2代码示例3.3运行结果4、总结1、认识PythonPython是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他......
  • python-识别图片中的文字
    1、下载:https://digi.bib.uni-mannheim.de/tesseract/我们之所以要应用Tesseract,是因为他是一个开源的OCR(光学字符识别)引擎,它可以从各种图像中提取文本信息。它具有以下作用:-从扫描或拍摄的图像中提取文本:Tesseract可以从这些非结构化的图像中识别和提取文本,这些图像可以......
  • 贪吃蛇小游戏Python Pygame实现
    运行结果 游戏规则1.↑↓←→来控制蛇的移动方向2.蛇吃到自己身体的任意一部分游戏结束,自动退出窗口3. 蛇的速度会随游戏时间增长越来越快,与吃食物的多少(分数)无关4.蛇可以穿过边界到达另一边5.场上食物同时只会存在一个,颜色随机,但每个颜色的所得分......
  • 爬虫 | xpath + lxml 库 解析爬取网页
    lxml库是用来解析XML和HTML网页内容的Xpath库则是用来查询数据(XPath表达式是一种在XML文档中查找信息的语言,它同样适用于HTML文档)简单示例:#先pipinstalllxmlimportrequestsfromlxmlimportetree#etree主要是用来解析和操作XML/HTML文档#步骤3:获取......
  • Python 字符串
    Python字符串Python中的字符串是一种常见且重要的数据类型,用于存储文本信息。字符串是不可变的,即一旦创建,就不能更改其内容。但我们可以创建新的字符串作为修改的结果。以下是关于Python字符串的一些基本操作和功能的介绍。数据类型转字符串在Python中,你可以使用str()......
  • 爬取京东商品图片的Python实现方法
    引言在数据驱动的商业环境中,网络爬虫技术已成为获取信息的重要手段。京东作为中国领先的电商平台,拥有海量的商品信息和图片资源。本文将详细介绍如何使用Python编写爬虫程序,爬取京东商品的图片,并提供完整的代码实现过程。爬虫基础在开始编写爬虫之前,需要了解一些基本的网......