python采集博客中上传的QQ截图文件
作者:junjie 发布时间:2021-03-03 16:45:25
标签:python,QQ截图
哎,以前写博文的时候没注意,有些图片用QQ来截取,获得的图片文件名都是类似于QQ截图20120926174732-300×15.png的形式,昨天用ftp备份网站文件的时候发现,中文名在flashfxp里面显示的是乱码的,看起来好难受,所以写了一个python小脚本,爬取整个网站,然后获取每个文章页面的图片名,并判断如果是类似于QQ截图20120926174732-300×15.png的形式就输出并将该图片地址和对应的文章地址保存在文件中,然后通过该文件来逐个修改。
好了,下面是程序代码:
import urllib2
from bs4 import BeautifulSoup
import re
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
baseurl = "https://www.jb51.net/dont-worry.html"
#说明下,起始地址是第一篇文章的地址,通过该文章的页面就
#可以使用BeautifulSoup模块来获取上一篇文章的地址
file = open(r"E:\123.txt","a")
def pageloop(url):
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
img = soup.findAll(['img'])
if img == []:
print "当前页面没有图片"
return
else:
for myimg in img:
link = myimg.get('src')
print link
pattern = re.compile(r'QQ\S*[0-9]*png')
badimg = pattern.findall(str(link))
if badimg:
print url
file.write(link + "\n")
file.write(url+"\n")
def getthenextpage(url):
pageloop(url)
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
for spanclass in soup.findAll(attrs={"class" : "article-nav-prev"}):
#print spanclass
if spanclass.find('article-nav-prev') != -1:
pattern = re.compile(r'https://www.jb51.net/\S*html')
pageurl = pattern.findall(str(spanclass))
for i in pageurl:
#print i
getthenextpage(i)
getthenextpage(baseurl)
print "the end!"
file.close()
最后,对和我以前刚开始做网站的同学说下,图片命名的话最好是用数字形式或者是英文、拼音的形式,要不然到最后想修改的话就麻烦了,所以最好就是从刚开始就养成好的习惯,用正确的命名规范来问文章、图片来命名,这样就会好很多。


猜你喜欢
- 笔者需要tensorflow仅运行在一个GPU上(机器本身有多GPU),而且需要依据系统参数动态调节,故无法简单使用CUDA_VISIBLE
- 要了解JavaScript对象,我们可以从对象创建、属性操作、对象方法这几个方面入手。概括起来,包括以下几模块: 1.
- 其实SQLServer提供了一个sp_spaceused的系统存储过程可以实现该功能,下面就是调用的SQL: 代码如下:crea
- 最近看Python看得都不用tab键了,哈哈。今天看了一个经典问题--八皇后问题,说实话,以前学C、C++的时候有这个问题,但是当时不爱学,
- 本文实例讲述了Python最长公共子串算法。分享给大家供大家参考。具体如下:#!/usr/bin/env python # find an
- v-model 最好用的就是配合 data 達成 Two-way Binding,但若使用 Vuex 之後,是否還能使用 v-model 搭
- Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提
- 一般来说,我们会将自己写的Python模块与python自带的模块分开存放以达到便于维护的目的。那么如何在Python中添加自定义的模块呢?
- 一.概述:Selenium是一个用于Web应用程序测试的工具,本文使用的是Selenium 2。Selenium就是一套类库,不依赖于任何测
- 一般调试程序的时候都比较倾向print,利用直接打印的方法作出判断,但是print只能打印出结果,对类型无法作出判断。例如:复制代码a =
- 问题:python3 如何转换html到pdf描述:我的电脑是windows764位,python3.4我想用python 转换html到p
- 如下所示:function makeAcquire($nUsers,$nAwards) { &
- 这可是个综合性的问题,看看下面对文件操作的集大成代码:<% 'Set file i/
- concat 与其说是连接,更准确的说是拼接。就是把两个表直接合在一起。于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数
- 一.Pygame程序基本搭建过程Pygame搭建游戏窗口主要为如下几步1.初始化化程序在使用Pygame编程之前,我们要对程序进行初始化,代
- 一、cache介绍由于Django是 * 站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使
- 首先对空格宽度的定义:空格,由于每个浏览器处理会有微小的不同,在这里我将可以选中的宽度作为空格的宽度。视觉宽度和可选中的宽度有 0~3px
- 曲线一解释这里是使用matplotlib来绘制正态分布的曲线。代码实现import numpy as npimport matplotlib
- 双向数据绑定指的是当对象的属性发生变化时能够同时改变对应的UI,反之亦然。换句话说,如果我们有一个user对象,这个对象有一个name属性,
- 1.数据库事务的基本特性。原子性:事务中的所有操作要么全部提交成功,要么全部失败回滚。场景:UPDATE cs_user SET age =