为什么Python运行不出结果,只有进程已结束退出代码为0


# 爬取淘宝页面
import requests
import re


def gethtmlText(url):
    try:
        headers = {'authority': 'suggest.taobao.com',
                   'accept': '*/*',
                   'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
                   # Requests sorts cookies= alphabetically
                   'cookie': '**********',
                   'referer': '*********',
                   'sec-ch-ua': '"Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"',
                   'sec-ch-ua-mobile': '?0',
                   'sec-ch-ua-platform': '"Windows"',
                   'sec-fetch-dest': 'script',
                   'sec-fetch-mode': 'no-cors',
                   'sec-fetch-site': 'same-site',
                   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                                 'Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47', }
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""


def parsePage(ilt, html):
    try:
        plt = re.findall(r'\"view_price\"\"[\d]*\"', html)
        tlt = re.findall(r'\"raw_title\"\".*?\"', html)
        for i in range(len(plt)):
            price = eval(plt[i].split(':')[1])
            title = eval(tlt[i].split(':')[1])
            ilt.append([price, title])
    except:
        print("")


def printGoodsList(ilt):
    tplt = "{:4}\t{:8}\t{:16}"
    print(tplt.format("序号", "价格", "商品名称"))
    count = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[0], g[1]))


def main():
    goods = '李宁'
    depth = 3
    start_url = 'https://s.taobao.com/search?q=' + goods
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(44 * i)
            html = gethtmlText(url)
            parsePage(infoList, html)
        except:
            continue
    printGoodsList(infoList)


main()

会不会没爬到东西 哈哈哈

img


因为啥都没爬到吧,我看数据是空的

从错误信息“进程已结束退出代码为0”来看,Python脚本语法上没有错误,但是运行后没有任何输出,直接退出。这通常有以下几个原因:

  1. 逻辑错误:脚本的逻辑设计有问题,导致无法正常执行或提前退出。需要检查脚本的逻辑流程,确认各个函数、循环等的执行顺序和条件判断是否正确。

  2. 外部依赖问题:脚本依赖于某些外部资源,但资源无法正常获取,导致脚本运行异常。如网络不通导致无法访问网页、文件不存在导致无法打开等。需要检查脚本是否依赖外部资源,如果有需要确保资源可正常获取。

  3. 编码问题:脚本使用的编码与系统编码不匹配,导致无法正确执行某些操作如正则表达式等。需要检查脚本编码是否为UTF-8,并使用正确的编码读取各资源。

  4. 权限问题:脚本执行需要指定权限,但实际权限不足,导致无法完成某些操作。如访问系统目录、读写文件等。需要检查脚本是否需要特定权限,是否已获取足够权限。根据您提供的代码和错误信息来看,很可能是遇到了网络问题,导致gethtmlText()函数无法正常获取网页内容,进而影响后续的解析和输出。

建议:

  1. 检查网络是否正常,可以访问目标网页(淘宝搜索页面)。如果网络异常需要先解决网络问题。
  2. 在gethtmlText()函数中添加错误处理,如果因为网络问题无法获取内容,可以给出相应提示并返回,避免影响其他逻辑。
    例如:
def gethtmlText(url):
    try: 
        # 原有代码
    except ConnectionError:
        print('网络异常,无法获取网页内容')
        return ''
  1. 在主程序main()函数中,在循环获取网页内容的前后添加try/except,在except中捕获异常并给出提示,避免程序直接退出。例如:
def main():
    # 定义变量      
    try: 
        for i in range(depth):      
            # 获取网页内容的代码     
        printGoodsList(infoList)
    except Exception as e:
        print(e)
        print('程序异常,退出执行')