最近正学习python+爬虫的知识。从网站上爬取一些信息然后保存。但是现在的好多网站都采取了反爬取的措施。我做的内容是爬取一些网页中的图片信息。但是这个网站上把网页中图片信息后面又加了一些无效多余的信息。来防止爬虫爬取。
代码如下所示:
!thing.fixed.big">
这个网站在.jpg的后面又添加了“!thing.fixed.big”这个字符串了进行干扰。如果按照原来的爬取方法,肯定会爬取到多余的信息。所以需要在获取图片地址之后,对表示地址的字符串进行处理来消除多余信息。
python3中有这样一个字符串处理函数:strip()。此函数可以消除字符串中多余的空格字符。但是配置好参数之后,也是可以进行处理多余的字符的。
举例如下:
spam='dirdirdirdireggdir'
spam2=spam.strip('dir')
print(spam2)
运行结果:
egg
很明显,这个函数剔除了‘dir’,这个无用的字符串。
下面我们可以使用这个函数来对图片地址中的无效信息进行处理.看一下效果如何:
代码如下所示:
spam="https://making-photos.b0.upaiyun.com/photos/1431d4beeb5f28095b938b374e7a8168.jpg!thing.fixed.big"
spam2=spam.strip("!thing.fixed.big")
print(spam2)
运行结果:
ps://making-photos.b0.upaiyun.com/photos/1431d4beeb5f28095b938b374e7a8168.jp
很明显,运行的结果并没有达到理想中的效果。开头的https和结尾的jpg都有缺失。
看来只能另觅它途.思路是查找字符串,查找出“!thing.fixed.big”这个字符串的确切位置,然后对字符串进行切片处理,以剔除无效字符.
代码如下:
spam="https://making-photos.b0.upaiyun.com/photos/1e890a9184d31fa11224dcf5198fda6d.jpg!thing.fixed.big"
if '!thing.fixed.big' in spam: #判断一下要清除的字符串是否在较大的字符串中。
pos=spam.index('!thing.fixed.big') #确定字符串出现的位置。
spam2=spam[:pos] #对字符串进行切片处理。
print(spam) #打印原字符串
print(spam2) #打印输出处理后的效果
运行结果:
https://making-photos.b0.upaiyun.com/photos/1e890a9184d31fa11224dcf5198fda6d.jpg!thing.fixed.big
https://making-photos.b0.upaiyun.com/photos/1e890a9184d31fa11224dcf5198fda6d.jpg
基本达到了预期的效果!
ps:处理字符串是可以使用列表的方法,例如:切片。