首页 > 编程语言 >爬取京东商品图片的Python实现方法

爬取京东商品图片的Python实现方法

时间:2024-06-11 16:33:25浏览次数:28  
标签: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文件,确保爬虫行为符合规定。
  • 请求频率控制:避免过快发送请求,以免给服务器造成负担。
  • 异常处理:代码中应包含异常处理逻辑,确保程序稳定运行。

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

相关文章

  • Python 调整PDF页面尺寸大小
    在处理PDF文件时,我们可能会遇到这样的情况:原始PDF文档不符合我们的阅读习惯,或者需要适配不同显示设备等。这时,我们就需要及时调整PDF文档中的页面尺寸,以满足不同应用场景的需求。利用Python语言的高效性和灵活性,再结合Spire.PDFforPython库的强大功能,我们可以通过Python代码轻......
  • python怎么保留小数
    保留两位小数,并做四舍五入处理方法一:使用字符串格式化a = 12.345print("%.2f" % a)# 12.35方法二:使用round内置函数a = 12.345a1 = round(a, 2)print(a1)# 12.35方法三:使用decimal模块from decimal import Decimala = 12.345Decimal(a).......
  • python怎么画曲线图
    如何使用python画曲线图?下面是基本步骤:前提首先,为了实际使用Matplotlib,我们需要安装它。安装如果你安装了更高版本的Python,你应该能够打开cmd.exe或终端,然后执行:pip install matplotlib注意:如果上面的较短命令不工作,你可能需要执行C:/Python34/Scripts/pipinsta......
  • 基于Vue+Node.js的高校学业预警系统+10551(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    NodeJS高校学业预警系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,教育行业当然也不能排除在外。高校学业预警系统是以实际运用为开发背景,运用软件工程开发方法,采用Node.JS技术构建的一个管理系统。......
  • 使用python处理excel数据
    使用python处理excel数据python处理excel数据时间差计算平均量计算excel处理后数据python处理excel数据excel数据有一列是开始时间,一列为结束时间,计算时间差,时间差>1h,将数据平均为1h。时间差>1h,总量也将平均到每个小时,如第三行数据,时间差为4h,数据为5.2,所以每小时......
  • python-找第一个只出现一次的字符
    [题目描述]给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。输入:一个字符串,长度小于1100。输出:输出第一个仅出现一次的字符,若没有则输出no。样例输入1abcabd样例输出1c来源/分类(难度系数:一星) 完整代码如下:a=list(input())b=[......
  • python数据分析
    frompyechartsimportoptionsasoptsfrompyecharts.chartsimportMap#假设你有一个包含省份和抖音大v人数的字典data={  "广东":100,  "江苏":80,  "山东":70,  "浙江":60,  "河南":50,  "河北":40,  &qu......
  • Python项目打包二进制文件并发布
    复制项目生成二进制文件(交叉编译???)重命名二进制文件生成pyi文件(编译器智能提示需要删除原始py文件(复制后的)项目打包上传(分版本分平台???)流程、代码待完善二进制文件生成pipinstallcpython#setup.pydeffind_pyx_files(directory):pyx_files=[]forroot,_......
  • Python酷库之旅-开启库房之门
    目录一、库的定义二、库的组成三、库的分类四、如何学好Python库?五、注意事项六、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、 博客个人主页一、库的定义        在Python中,库(Library)是一个封装了特定功能或......
  • pytqt5及python下程序打包发布
    关于写的软件如何打包发布,总结一下找到的方式,方便后期使用。首先,你需要安装pyinstaller。pipinstallpyinstaller如果你打包的文件想要是多个文件,这样打包后的文件是在你输入路径下的文件,包含多个数据,你需要exe文件在dist文件夹下pyinstaller--name="key_gongdan""......