1
KK233 2013-12-09 03:07:30 +08:00 1
我也是新手~
1.源代码页面下ctrl+F搜索 关键字'jpg',高亮的都是图片地址 2.观察发现图片地址的格式是<img src="xxxx" />,图片地址是xxxx.然后用懒惰匹配取url就可以了.注意这里是相对地址.前面得加上应该加的东西.. 至于正则学习推荐 https://deerchao.net/tutorials/regex/regex.htm 正则表达式30分钟入门,看完应该就会写啦~ |
2
dizzy OP @KK233 谢谢你的答复,你提到那篇教程我之前初略看了下,看来还得细看下啊。至于你提到的第二点还是有些不明白,匹配的时候<img src=这个也要匹配吗?
|
3
vmebeh 2013-12-09 03:18:58 +08:00 2
pat = re.compile(ur'<img\ssrc="(.+?)"\s/>')
python自带有个正则表达式测试工具,在 Tools\Scripts\redemo.py,表达式在其他地方写好了再复制过来,不然不小心匹配到的内容多会卡死 |
4
KK233 2013-12-09 03:27:19 +08:00 1
@dizzy "<img src="是"图片地址"的一个特征, 加上这个特征可以匹配你想匹配的img类型的图,
比如: <img src="1.jpg" /> <img src="2.jpg" /> <img src="3.jpg" /> <script src="4.js"> 使用正则 (<img src=".*?") 抓取到的都是你想要抓取的东西,但是 4.js 就不是你想要的,如果你不用你仅仅用(src=".*?") 不加图片特征 img, 是不是连4.js都会匹配到? |
7
dizzy OP @KK233 我用'<img src=".*?"'这样的正则表达式又试了下煎蛋网,过滤出了'<img src="http://ww4.sinaimg.cn/xxxxxxxxxxx.jpg"'这样的地址,但是这个图片地址前面有<img src字样,我怎么才能下载呢?
|
8
vmebeh 2013-12-09 03:45:53 +08:00 1
@KK233 似乎与编码有关? http://docs.python.org/2/library/re.html#regular-expression-syntax
@dizzy 这个站的图片地址是相对路径,前面要加上 http://lumeizi.com/ |
10
dizzy OP @KK233
@vmebeh 代码终于可以运行了。非常感谢你们。我的正则表达式基础还需加强啊。不知道你们的正则表达式在哪学的。只需要看看这个吗?https://deerchao.net/tutorials/regex/regex.htm 最后我的代码是这样写的: import urllib2 import urllib import re pat = re.compile('<img src="(.*?)"') html = urllib2.urlopen('http://lumeizhi.com').read() imglist = pat.findall(html) i = 1 for x in imglist: url = 'http://lumeizhi.com' + x urllib.urlretrieve(url, 'D:\pic\%s.jpg' % i) i = i + 1 |
11
Livid MOD Google beautifulsoup
|
13
jackjm 2013-12-09 08:26:01 +08:00 via iPad 1
|
17
kevinkim 2013-12-09 09:11:32 +08:00 1
其实感觉用xpath更方便啊,直接开控制台右键复制xpath就能用。
|
19
wizardoz 2013-12-09 09:17:57 +08:00 1
html的话有一个库叫做“beautiful soap”,绝对好用。我原来就用这个来下载整站图片。
|
20
luoyou1014 2013-12-09 09:26:00 +08:00 1
BS4 强烈推荐, 抛弃正则表达式吧 http://www.crummy.com/software/BeautifulSoup/bs4/doc/
不过BS4解析dom的能力和js还是差了N个水准, 网页不标准的时候, 页面结构可能会乱掉, 所以最好贪婪匹配 |
21
Lelouchcr 2013-12-09 09:26:35 +08:00 1
|
22
alexrezit 2013-12-09 09:30:29 +08:00 1
正则? 解析 HTML 难道不是应该用 XPath?
|
23
dizzy OP |
27
Lelouchcr 2013-12-09 09:52:28 +08:00
@dizzy 对的,完全满足你的要求,全用python的基本库,虽然是e文,还有配套练习,还有python的话总要面对E文的,面对现实吧~~
|
28
Sylv 2013-12-09 10:06:17 +08:00 1
|
32
Sylv 2013-12-09 10:35:26 +08:00 1
@dizzy 你写的代码只能抓取首页的几张图片,对“加载更多”就没辙了,对吧?
我看了下这个网站的js代码,发现它是用/image.json来载入图片的 这样就不用去分析网页代码了,甚至还能知道图片得了多少个赞哦 然后用json.loads(),很容易就可以得到地址进行整站下载了 |
34
dizzy OP @Sylv 刚刚去看了下python json模块的解释,虽然还是不懂你是怎么做到的,但是感觉这个办法挺简单的(我之前确实不能处理加载更多的情况)。可能是我对javascript不了解的原因吧。
|
35
fengliu222 2013-12-09 11:45:45 +08:00
node.js+cheerio比较简单~
|
36
detailyang 2013-12-09 11:50:12 +08:00
js代码吊炸天 return console.log('找工作?山东济南找蓝翔!');
|
37
Sylv 2013-12-09 12:51:12 +08:00
|
38
0bit 2013-12-10 17:45:16 +08:00
@wizardoz 我在找Python上好用的SOAP Client的时候竟然搜到了这里。是"Beautiful Soup",不是"Beautiful Soap"
|
39
qu2ena 2013-12-15 03:19:06 +08:00
哇哇哇,我也是爬虫新手,我超级爱爱爱dizzy那首歌。
|