为了账号安全,请及时绑定邮箱和手机立即绑定

Python爬虫抓取当当网图片时,正则表达式没有匹配到链接地址

Python爬虫抓取当当网图片时,正则表达式没有匹配到链接地址

陪伴而非守候 2018-11-13 21:16:29
最近正在学Python爬虫,从最基础的学起,即用 urllib 和 re 这两个包学抓取。用教材(韦玮《精通Python网络爬虫》)第77页的方法爬京东的图片完全没问题,但想照猫画个虎,爬一下当当网儿童图书版块的图片,却怎么也行不通,用正则表达式做的 pattern,死活就是没有匹配到任何链接地址。当当网初始页面:http://category.dangdang.com/pg1-cp01.41.26.00.00.00.html求大神指正!import re, urllib.requestdef craw(url, page):    s = str(urllib.request.urlopen(url).read())    p = "<img data-original='(.+?)'"    lnks = re.findall(p, s)    t = re.search(p, s)        x = 1    for lnk in lnks:        fname = 'D:/Python/ddIMGs/book_kid/' + str(page) + '-' + str(x)        try:            urllib.request.urlretrieve(lnk, filename=fname)        except urllib.error.URLError as e:            if hasattr(e, 'code'):                x += 1            if hasattr(e, 'reason'):                x += 1        x += 1for i in range(1, 2):    url = 'http://category.dangdang.com/pg' + str(i) + '-cp01.41.26.00.00.00.html'    craw(url, i)
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

修改第4、5两行如下,貌似就解决问题了:

1     s = str(urllib.request.urlopen(url).read().decode(encoding='gbk'))
2     p = re.compile("<img data-original='(.+?)'", re.S)

编码真的是个麻烦的问题,正则表达式也是,看来得多练习才行!


查看完整回答
反对 回复 2018-11-17
?
LEATH

TA贡献1936条经验 获得超6个赞

如果s是正确的话,那应该能找得到。

urllib.request.urlopen(url).read().decode(encoding='utf8')这才对。


查看完整回答
反对 回复 2018-11-17
  • 2 回答
  • 0 关注
  • 847 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信