吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1905|回复: 14
收起左侧

[求助] python 运行完成无法终止程序

  [复制链接]
∫護着妳佉遠方 发表于 2022-1-28 18:10
本帖最后由 ∫護着妳佉遠方 于 2022-1-31 15:45 编辑

下载完成以后,程序还在运行,没有退出,不知道为什么
求助:问题所在,解决方法
[Python] 纯文本查看 复制代码
import re
import time
import urllib.parse
import urllib.request
from multiprocessing import Queue, Process

import requests
from bs4 import BeautifulSoup


# 生产者
def producer(name_, q):
    url = 'https://www.starbucks.com.cn/menu/'

    head = {
        'Cookie': 'ZHh6ku4z=AMCsJHZ-AQAAOcyxX6Yl2s20HjtkZfHK87MTPofIn6iYXJHzUvqd_HT1ZDMD|1|0'
                  '|36c0e1a8addcb91415dc5a8a4223425eca69e3d4',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, '
                      'like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.76'
    }

    # 请求对象定制
    request = urllib.request.Request(url=url, headers=head)

    #  模拟浏览器向服务器发送请求
    response = urllib.request.urlopen(request)

    content = response.read().decode('utf-8')
    # print(content)
    soup = BeautifulSoup(content, 'lxml')
    # 名称
    # //ul[@class="grid padded-3 product"]//strong/text()
    # 名称列表
    name_list = soup.select('ul[class="grid padded-3 product"] strong')
    # 图片列表.jpg
    # //ul[@class="grid padded-3 product"]//div/@style
    img_lisi = soup.select('ul[class="grid padded-3 product"] div')

    for i in range(len(name_list)):
        name = name_list[i]
        aaa = name.get_text()
        yyy = re.sub('/', ',', aaa)

        img = img_lisi[i]
        bbb = img.attrs.get('style')
        ccc = re.findall(r'url\("(.*)"\)', bbb)[0]
        ddd = 'https://www.starbucks.com.cn' + ccc
        q.put({'name': yyy, 'img': ddd})
    # print('生产完毕')

# 消费者
def consumer(name_, q):
    while True:
        res = q.get()
        if q.qsize() == 0 or q.empty():
            break
        else:
            name1 = res['name']
            img1 = res['img']
            # print(name_, name1, img1)
            f = open(name1 + '.jpg', 'wb')
            d = requests.get(img1).content
            f.write(d)
            f.close()
            print(name_, '成功下载', name1)


if __name__ == '__main__':
    # 创建一个队列
    q = Queue()

    p1 = Process(target=producer, args=('生产者', q))
    p1.start()
    for i in range(6):
        c = Process(target=consumer, args=('消费者' + str(i), q))
        c.start()


免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
年迈的魔卡樱 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ciker_li 发表于 2022-1-28 19:16
感谢分享,学习学习
vethenc 发表于 2022-1-28 19:20
黑户十年 发表于 2022-1-28 19:27
bly27984 发表于 2022-1-28 19:37
大佬niup
coco5677 发表于 2022-1-28 19:48
学习了,高手。
tewboo 发表于 2022-1-28 21:37
哈哈, 这么猛的吗.
好好玩~
感谢分享!
tewboo 发表于 2022-1-29 07:13
代码运行不了.
libraries都安装了.
然后python main.py开始运行之后, 就卡住...不知道为啥.
 楼主| ∫護着妳佉遠方 发表于 2022-1-29 10:11
tewboo 发表于 2022-1-29 07:13
代码运行不了.
libraries都安装了.
然后python main.py开始运行之后, 就卡住...不知道为啥.

应该可以啊,只是没办法停止,需要手动才能停下来,这个问题我还没解决
 楼主| ∫護着妳佉遠方 发表于 2022-1-29 10:13
tewboo 发表于 2022-1-29 07:13
代码运行不了.
libraries都安装了.
然后python main.py开始运行之后, 就卡住...不知道为啥.

如果一直不行,你试试这个串行的
[Python] 纯文本查看 复制代码
"""
 * @codding : utf-8
 * @time  : 2022/1/8 19:10:50
 * @name   : 18_BS4爬取星巴克.py
 * @system  : Windows 11
 * @Types    : pythonProject
 * @software : PyCharm
 * @author   :  
"""
import os
import re
import time
from urllib import request
from bs4 import BeautifulSoup

import requests

url = 'https://www.starbucks.com.cn/menu/'

response = request.urlopen(url)

content = response.read().decode('utf-8')

soup = BeautifulSoup(content, 'lxml')

# 名称
# //ul[@class="grid padded-3 product"]//strong/text()
# 名称集合
name_list = soup.select('ul[class="grid padded-3 product"] strong')
# 图片集合.jpg
# //ul[@class="grid padded-3 product"]//div/@style
img_lisi = soup.select('ul[class="grid padded-3 product"] div')
# print(name_list)
# print(img_lisi)
# 名称
list1 = []
# 图片地址
list2 = []
for name in name_list:
    aaa = name.get_text()
    yyy = re.sub('/', ',', aaa)
    list1.append(yyy)

for img in img_lisi:
    bbb = img.attrs.get('style')
    ccc = re.findall(r'url\("(.*)"\)', bbb)[0]
    ddd = 'https://www.starbucks.com.cn' + ccc
    list2.append(ddd)

# list1 名称      list2 地址
# 下载
# 开始时间
os.chdir('/爬虫/爬虫基础\\18_BS4爬取星巴克')
start_time = time.time()
i = 0
for i in range(len(list1)):
    # print(list1[i])
    # print(list2[i])
    # 请先创建文件夹
    if i == 0:
        print('开始下载!!!')

    f = open(list1[i] + '.jpg', 'wb')
    d = requests.get(list2[i]).content
    f.write(d)
    f.close()
    print('成功下载第{}张'.format(i + 1))
    # if i % 10 == 0:
    #     time.sleep(1)

# 结束时间
end_time = time.time()
print('下载完成!!!')
otherStyleTime = time.strftime("%S", time.localtime(end_time - start_time))
print('本次执行共下载{}张图,共耗时{}秒'.format(i, otherStyleTime))
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 13:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表