# 爬取淘宝页面
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()
会不会没爬到东西 哈哈哈
从错误信息“进程已结束退出代码为0”来看,Python脚本语法上没有错误,但是运行后没有任何输出,直接退出。这通常有以下几个原因:
逻辑错误:脚本的逻辑设计有问题,导致无法正常执行或提前退出。需要检查脚本的逻辑流程,确认各个函数、循环等的执行顺序和条件判断是否正确。
外部依赖问题:脚本依赖于某些外部资源,但资源无法正常获取,导致脚本运行异常。如网络不通导致无法访问网页、文件不存在导致无法打开等。需要检查脚本是否依赖外部资源,如果有需要确保资源可正常获取。
编码问题:脚本使用的编码与系统编码不匹配,导致无法正确执行某些操作如正则表达式等。需要检查脚本编码是否为UTF-8,并使用正确的编码读取各资源。
权限问题:脚本执行需要指定权限,但实际权限不足,导致无法完成某些操作。如访问系统目录、读写文件等。需要检查脚本是否需要特定权限,是否已获取足够权限。根据您提供的代码和错误信息来看,很可能是遇到了网络问题,导致gethtmlText()函数无法正常获取网页内容,进而影响后续的解析和输出。
建议:
def gethtmlText(url):
try:
# 原有代码
except ConnectionError:
print('网络异常,无法获取网页内容')
return ''
def main():
# 定义变量
try:
for i in range(depth):
# 获取网页内容的代码
printGoodsList(infoList)
except Exception as e:
print(e)
print('程序异常,退出执行')
setup()
try:
text()
except Exception as e:
print('运行异常:', e)
clean()