樊鴻燁
2021-06-23 17:58
采纳率: 100%
浏览 28

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 已采纳

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

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

    应该改成

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

    或者

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

     

    已采纳该答案
    打赏 评论
  • CSDN专家-黄老师 2021-06-23 18:04

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

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

    打赏 评论
  • CSDN专家-HGJ 2021-06-23 18:10

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

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

     

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

    打赏 评论

相关推荐 更多相似问题