python3 爬虫—爬取豆瓣电影图片(一)

内容:

爬取豆瓣电影首页https://movie.douban.com/ 显示出来的图片,并将其保存于本地路径中。


网页部分截图:


原理:

1.使用内置库:urllib.request 获取请求得到网页数据 ;

2.利用header 进行伪装浏览器;

3.再使用正则表达式  r'(https:[^s]*?(jpg|png|gif))'  取出照片地址

4.创建本地路径进行存储


代码:

import urllib.request
import socket
import re
import sys
import os

# 定义图片保存路径
targetPath = "D:\\py_project\\img"


def saveImg(path):
    # 检测当前根路径是否有效,不存在则新建
    if not os.path.isdir(targetPath):
        os.mkdir(targetPath)

    # 设置每个图片的路径
    # 获取图片地址最后一个 / 的位置
    pos = path.rindex('/')

    # img_path[pos+1:]获取/后面的名称,并加入到根路径
    t = os.path.join(targetPath, path[pos + 1:])
    return t


if __name__ == '__main__':

    # 需要抓取的url
    url = "https://movie.douban.com/ "
    # 添加header文件伪装成浏览器
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/51.0.2704.63 Safari/537.36'
    }
    # 通过urllib.request获取请求页面数据data
    req = urllib.request.Request(url=url, headers=headers)

    res = urllib.request.urlopen(req)

    data = res.read()

    # 通过正则表达式抓取储图片url
    for link, t in set(re.findall(r'(https:[^s]*?(jpg|png|gif))', str(data))):

        print(link)
        try:
            urllib.request.urlretrieve(link, saveImg(link))
        except:
            print('失败')

运行结果



### 使用Python编写爬虫程序抓取豆瓣电影数据 为了实现这目标,首先需要确保已安装必要的库。`requests` 库用于向网页发起 HTTP 请求,而 `BeautifulSoup` 则是从 HTML 或 XML 文件中提取数据的强大工具[^3]。 #### 安装依赖库 可以通过 pip 来安装这些库: ```bash pip install requests beautifulsoup4 ``` #### 编写基本的爬虫脚本 下面是个简单的 Python 脚本来获取并解析来自豆瓣电影页面的信息: ```python import requests from bs4 import BeautifulSoup def fetch_movie_data(movie_url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(movie_url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") title = soup.find('span', property="v:itemreviewed").string.strip() rating = soup.find('strong', class_="ll rating_num").string print(f"Title: {title}") print(f"Rating: {rating}") movie_link = "https://movie.douban.com/subject/1292052/" # Example movie link fetch_movie_data(movie_link) ``` 这段代码定义了个名为 `fetch_movie_data()` 的函数,它接受个参数作为电影详情页 URL 地址,并通过该地址访问对应的网页内容。接着利用 `BeautifulSoup` 对返回的内容进行分析处理,最终打印出所选影片的名字及其评分信息。 请注意,在实际开发过程中应当遵循目标站点的服务条款以及法律法规的要求;此外还应该考虑设置合理的请求间隔时间以免给服务器造成过重负担。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值