raid吾 2018-11-12 04:02 采纳率: 0%
浏览 570

爬虫代码问题,为什么要用set处理

代码如下,问题在最后:

import urllib.request

import socket

import re

import sys

import os

targetDir = r"D:\test" #文件保存路径

def destFile(path):

if not os.path.isdir(targetDir):

os.mkdir(targetDir)

pos = path.rindex('/')

t = os.path.join(targetDir, path[pos+1:])

return t

if name == "__main__": #程序执行入口
weburl = "http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E8%8C%83%E5%86%B0%E5%86%B0"
webheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=weburl, headers=webheaders) #构造请求报头
webpage = urllib.request.urlopen(req) #发送请求报头
contentBytes = webpage.read()

x=0
for link, t in set(re.findall(r'(http:[^\s]*?(jpg|png|gif))', str(contentBytes))): #正則表達式查找全部的图片
print(link)

    try: 
        urllib.request.urlretrieve(link, 'D:\\test\\%s.jpg' % x) 
        x=x+1
    except:
        print('失败') #异常抛出
问题是:for link, t in set(re.findall(r'(http:[^\s]*?(jpg|png|gif))', str(contentBytes))):
这句为什么要用set处理?for link ,t是啥意思?
  • 写回答

2条回答 默认 最新

  • Italink 2018-11-12 04:34
    关注

    findall,返回一个元组,用set(集合)去除重复的元素

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面