python爬虫代码出现报错

代码如下:

import urllib.request
url='https://tj.lianjia.com/ditiezufang/li110458004/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'}
request = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(request)
if response.status==200:   #判断是否正常响应
    html=response.read().decode('utf-8')
## 编写正则表达式
import re
reg='data-src="(.*o_auto)|(.*\.jpg)"\n'#源代码格式图片
imgre=re.compile(reg)
imglist = imgre.findall(html)
## 保存到本地数据库 
import os
os.chdir('C:\\Users\\90541\\Desktop\\数据分析\\pycode\\picture')# 工作路径指向这个目录
x=1
for img in imglist:
    img=img.replace('250x182','780x439')    这一步报错了
    urllib.request.urlretrieve(img,'%s.jpg' % x)#直接将远程数据下载到本地
    x+=1

reg='data-src="(.*o_auto)|(.*\.jpg)"\n'#源代码格式图片

你正则中有两个(),每次会获取两个子匹配结果,imglist的每个元素都是包含两个子匹配结果的元组。

应该改成

reg='data-src="(.*o_auto|.*\.jpg)"\n'#源代码格式图片

或者

reg='data-src="((?:.*o_auto)|(?:.*\.jpg))"\n'#源代码格式图片

 

你的数据清洗有问题,你可以debug一下看看数据

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
 

检查一下imglist,里面可能有空值,要先对imglist进行处理,这样:

imglist =[x for x in imgre.findall(html) if x!=' ')

 

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮