《Python网络数据采集》5.1节示例程序错误解决及re.sub用法

问题

学习《Python网络数据采集》5.1节时,作者给出了一个示例程序,试着运行了一下,发生以下错误

仔细研究,发现是src有问题,没有在代码中进行处理,这里第一个获取到的src的url是

实际文件应该是jquery.js,但是后面带了个版本号的小尾巴“?v=1.4.4”

所以在写入文件的时候出错。

解决方法及re.sub的用法

由于示例网站里面src的url不止一处带小尾巴,所以考虑用正则表达式进行替换。

网上随便搜到一个正则表达式替换字符串的示例:

详解Python中re.sub

所以本书示例代码可以修改如下:
首先导入re模块

然后在getDownloadPath函数中加入替换语句:

问题解决,修改后的代码运行结果如下:

《《Python网络数据采集》5.1节示例程序错误解决及re.sub用法》有3个想法

  1. 其实这本书中给的例子没有错,打开网页的源代码你会发现所有的src属性中,最后一个是正常的图片(.jpg),作者也很圆滑,编写代码时没有将urlretrieve()这个函数放在for循环里,因此只是下载最后一个src,所以没有出错;不过你这个挺好,真正解决了这个问题,而不是投机取巧;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax