zwfnet 发表于 2014-08-07 15:23

关于用一个列表接受另一个列表的遍历问题

本人菜鸟级,在用python写一个下载图片的的小爬虫,当中遇到一个小麻烦,就是某论坛里有些图片源码里面没有http的,file="data/a/b/c/0000000001c5gb8evgpkyo3g8a.jpg",
def getImg(html):
    reg = r'file="(.*?\.jpg)"'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
我得到这样一个imglist的列表但是缺少域名http://www.abc.com/
用for循环加上去
headurl = 'http://www.abc.com/'
    for url in imglist:
      fullurl =
      print fullurl
我是用os模块将headurl加到imglist列表里的,现在的问题是我得到的是每一个图片是一个列表,怎样写才能把fullurl这个编程一个大的列表,而不是每个图片生成一个列表?

或者高手们有什么其它更好的方法?谢谢大家!



icymirror 发表于 2014-08-07 16:10

回复 1# zwfnet
当得到imglist列表后,可以这样(假定所有的数据都是需要追加url的开头这部分的):headurl = 'http://www.abc.com/'
newList = 这时,newList应当就是你需要的新列表了。
记得:这个假定是所有的URL都需要加url头的。

zwfnet 发表于 2014-08-07 16:49

回复 2# icymirror


是的,这方法可以实现,但是为啥我print出来的效果是,出现生成N次的列表哦,意思是我的imglist有多少个元素,就会出现多少次newlist。能否改进?

非常感谢你的回复,谢谢!


   

icymirror 发表于 2014-08-07 17:12

回复 3# zwfnet
主要是因为你在for循环里面把fulllist做成了一个list,然后马上打印它。
你可以试着先把[]去除,然后再执行下你的循环。

zwfnet 发表于 2014-08-08 11:46

回复 4# icymirror

明白了,我去掉上面的for循环不去循环那个列表就对了,因为之前也是一个列表,所以把那个列表遍历了一遍,所以才会重复出现了这么多次数。

不过item for item in imglist 这个方法是在很棒,我就没想到,还是非常感谢你,受教了!   

bskay 发表于 2014-08-18 14:41

再加个条件
newList =

lizhihui_kevin 发表于 2014-09-17 10:40

newList = [''.join() for item in imglist]
页: [1]
查看完整版本: 关于用一个列表接受另一个列表的遍历问题