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

最近正在学Python爬虫,从最基础的学起,即用 urllib 和 re 这两个包学抓取。

用教材(韦玮《精通Python网络爬虫》)第77页的方法爬京东的图片完全没问题,但想照猫画个虎,爬一下当当网儿童图书版块的图片,却怎么也行不通,用正则表达式做的 pattern,死活就是没有匹配到任何链接地址。

当当网初始页面:http://category.dangdang.com/pg1-cp01.41.26.00.00.00.html

求大神指正!

import re, urllib.request


def 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 += 1


for i in range(1, 2):

    url = 'http://category.dangdang.com/pg' + str(i) + '-cp01.41.26.00.00.00.html'

    craw(url, i)


陪伴而非守候
浏览 814回答 2
2回答

慕码人2483693

修改第4、5两行如下,貌似就解决问题了:1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;str(urllib.request.urlopen(url).read().decode(encoding='gbk')) 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;re.compile("<img&nbsp;data-original='(.+?)'",&nbsp;re.S)编码真的是个麻烦的问题,正则表达式也是,看来得多练习才行!

LEATH

如果s是正确的话,那应该能找得到。urllib.request.urlopen(url).read().decode(encoding='utf8')这才对。
打开App,查看更多内容
随时随地看视频慕课网APP