为什么爬取这个网页的输出却得到 None?代码如下

2017-12-15 18:13:14 +08:00
 wzpyl541
#coding=utf-8

import urllib

import re



def getHtml(url):

page = urllib.urlopen(url)

html = page.read()

return html



def getImg(html):

reg = r'src="(.+?\.jpg)" pic_ext'

imgre = re.compile(reg)

imglist = re.findall(imgre,html)

x = 0

for imgurl in imglist:

urllib.urlretrieve(imgurl,'%s.jpg' % x)

x+=1





html = getHtml("http://7mx.com/photo/444648")



print getImg(html)
1840 次点击
所在节点    Python
3 条回复
Liyuu
2017-12-16 03:08:38 +08:00
因为你的 getImg()没有返回任何值,所以你输出的结果就是 none
wzpyl541
2017-12-16 16:28:25 +08:00
但是这个网址是有图片的呀?为什么没有返回值呢?
Liyuu
2017-12-17 06:12:42 +08:00
首先,这个网址里的图片地址并不在网页源码里,你单纯的在这个网页源码里去搜这个.jpg 是不会有结果的,不信你可以在 html = page.read() 后面加一句 print(html),看看里面是否有 jpg。
其次,就算你改进了程序,得到了图片地址 你也要在 getImg()这个程序的里写 "return 图片地址的变量",才会打印出来你想要的,getImg()如果不 return 东西的话,你打印它就是 none

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX