python 豆瓣爬虫:自动下载周星驰图片

本文介绍了一个使用Python和requests库实现的豆瓣图片爬虫。通过解析JSON数据,爬虫可以抓取与关键词“周星驰”相关的图片,并将其保存到本地。文章详细展示了代码实现过程,包括如何发送HTTP请求、解析返回的JSON数据以及下载图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果演示

废话不多说,先看下代码和效果

代码


# coding:utf-8
import requests
import json

def download(src,id):
    dir = './'+str(id)+'.jpg'
    try:
        pic = requests.get(src,timeout=10)
    except requests.exceptions.ConnectionError:
        print('timeout error')
    fp= open(dir,'wb')
    #write
    fp.write(pic.content)
    #close
    fp.close()

query ='周星驰'
for i in  range(0,38958,20):
    url = 'https://www.douban.com/j/search_photo?q='+query+'&limit=20&start='+str(i)# open
    html = requests.get(url).text# get
    response = json.loads(html,encoding='utf-8')
    for image in response['images']:
        print(image['src'])# 测试路径
        download(image['src'],image['id'])

效果

星爷当年如此帅气
在这里插入图片描述

爬虫流程

打开网页

首先打开豆瓣官网,输入关键词‘周星驰’进行搜索,结果出来后,我们选择图片选项,注意选择图片前要打开chrome的开发者工具,然后我们可以活动请求的链接地址了
https://www.douban.com/j/search_photo?q=周星驰&limit=20&start=0
搜索结果
这里有三个参数q,limit,start.q表示搜索的关键词,limit表示每页的显示数量,start表示每页的起始序号,注意默认是从0开始

获取数据

json 结构
搜索结果是json 结果的数据,具体内容是一个数组images,数组的元素是字典

保存数据

def download(src,id):
    dir = './'+str(id)+'.jpg'
    try:
        pic = requests.get(src,timeout=10)
    except requests.exceptions.ConnectionError:
        print('timeout error')
    fp= open(dir,'wb')
    #write
    fp.write(pic.content)
    #close
    fp.close()

使用Selenium进行网页爬虫,可以模拟浏览器行为动态获取网页内容,尤其适合处理JavaScript渲染的内容。要爬取豆瓣电影周星驰的人物信息,你可以按照以下步骤操作: 1. **安装依赖**: 首先需要安装Selenium库(Python版本使用pip install selenium)以及对应的WebDriver(比如ChromeDriver),用于控制浏览器。 2. **导入模块**: 导入所需的库,如`webdriver_manager`, `time`, 和 `BeautifulSoup` 或者 `pandas` 用于数据解析。 ```python from webdriver_manager.chrome import ChromeDriverManager from selenium import webdriver from bs4 import BeautifulSoup import time ``` 3. **创建浏览器会话**: 初始化一个新的Chrome浏览器实例,并设置窗口大小、等待时间等选项。 ```python driver = webdriver.Chrome(ChromeDriverManager().install()) driver.maximize_window() driver.implicitly_wait(10) # 设置默认的超时时间 ``` 4. **访问目标页面**: 访问豆瓣电影周星驰人物信息页,例如通过URL `https://movie.douban.com/actor/105292/`。 ```python url = "https://movie.douban.com/actor/105292/" driver.get(url) time.sleep(3) # 等待页面加载完成 ``` 5. **解析HTML**: 使用BeautifulSoup解析HTML内容,找到包含人物信息的部分,这通常涉及到CSS选择器或XPath表达式。 ```python soup = BeautifulSoup(driver.page_source, 'html.parser') name_element = soup.select_one('#info > h1') # 假设名字在id为info的h1标签内 bio_element = soup.find('div', {'class': 'bd'}) # 查找简介部分 name = name_element.text.strip() bio = bio_element.text if bio_element else None ``` 6. **提取其他信息** (如果有需要): 根据页面结构查找并提取更多的详细信息,如图片链接、作品列表等。 7. **保存结果**: 将提取的数据存储到文件或数据库中,如果使用的是pandas,可以直接转为DataFrame。 8. **关闭浏览器**: 完成任务后,记得关闭浏览器会话。 ```python driver.quit() ``` 注意:网络爬虫使用时要遵守网站的Robots协议,尊重版权,并且可能会受到反爬虫策略的影响,所以在实际操作前,最好确认该站点允许抓取并且有相应的API接口可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值