A. python爬取图片时忽略了一些图片
真实图片地址是在客户端javascript代码中计算出来的.
你需要寻找
<spanclass="img-hash">tnaS5qcGc=</span>
这样的内容,取出
tnaS5qcGc=
这段内容,做base64解码即得图片地址。
相应的脚本在
//cdn.jandan.net/static/min/.03100001.js
这段内容你通过get_page()爬到地页面中有,同样,该页面中有这样的html(为便于阅读已重排格式):
<divclass="text">
<spanclass="righttext">
<ahref="//jandan.net/ooxx/page-34#comment-4001800">4001800</a>
</span>
<p>
<imgsrc="//img.jandan.net/img/blank.gif"onload="jandan_load_img(this)"/>
<spanclass="img-hash">tnaS5qcGc=</span>
</p>
</div>
这个img的onload调用的函数就在前面给出的那个js文件中:
functionjandan_load_img(b){
vard=$(b);
varf=d.next("span.img-hash");
vare=f.text();
f.remove();
varc=(e,"");
vara=$('<ahref="'+c.replace(/(//w+.sinaimg.cn/)(w+)(/.+.(gif|jpg|jpeg))/,"$1large$3")+
'"target="_blank"class="view_img_link">[查看原图]</a>');
d.before(a);
d.before("<br>");
d.removeAttr("onload");
d.attr("src",location.protocol+c.replace(/(//w+.sinaimg.cn/)(w+)(/.+.gif)/,"$1thumb180$3"));
if(/.gif$/.test(c)){
d.attr("org_src",location.protocol+c);
b.onload=function(){
add_img_loading_mask(this,load_sina_gif)
}
}
它调用了对img-hash的内容做解码,这个函数同样在这个js文件中:
var=function(o,y,g){
vard=o;varl="DECODE";
vary=y?y:"";
varg=g?g:0;
varh=4;
y=md5(y);
varx=md5(y.substr(0,16));
varv=md5(y.substr(16,16));
...中间部分略去...
if(l=="DECODE"){
m=base64_encode(m);
varc=newRegExp("=","g");
m=m.replace(c,"");
m=u+m;
m=base64_decode(d)
}
returnm
};
你只需要在Python使用相应的库对抓取到的img-hash内容做解码即可得到图片地址。
你使用了str的find来从文本中定位位置,这样做太麻烦了,太多的代码细节,使用re模块做正则匹配就简单很多,更快的是直接使用现有的爬虫库.
使用re进行正则匹配,只需要使用正则式'<spanclass="img-hash">(.+?)<'即可提取出该页面中所有加密的图片地址。
importre
importbase64
pat=re.compile('<spanclass="img-hash">(.+?)<')
...
defget_imgurls(url):
urls=[]
forimgurlinpat.findall(url_open(url).decode('utf-8')):
.append(str(base64.b64decode(imgurl),'utf-8'))
returnurls
然后就可以对get_imgurls返回的列表遍历,逐个交给save_img处理了。
使用爬取库也只需要寻找span,从中找出class='img-hash'即可读取text。
B. 求推荐笔记本电脑
可以看看华硕的天选系列,无畏系列。
目前华硕商城与有得卖网合作推出”以旧换新服务”(品牌不限),回收旧机兑换华硕商城代金券与现金,代金券用于华硕商城购买商品的服务。
官方商城登录方式如下:
在华硕官网首页主菜单找到“华硕官方商城”,进入“以旧换新”。在页面输入产品信息,即会有估价信息。
C. python 通过pip安装matplotlib报错
PermissionError: [Errno 13] Permission denied: 'C:\Users\ADMINI~1\AppData\Lo cal\Temp\pip-build-a4z3oo5u\matplotlib\matplotlib/concrt140.dll' 访问权限的问题吧, 管理员身份运行终端, 重新执行一次试试
D. Python3.6.0安装Matplotlib总是出现如下的错误 numpy啥的都装成功了:求大神帮忙
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\ADMINI~1\\AppData\\Lo
cal\\Temp\\pip-build-a4z3oo5u\\matplotlib\\matplotlib/concrt140.dll'
访问权限的问题吧, 管理员身份运行终端, 重新执行一次试试
E. python教程哪里下载
一、Python入门到进阶的 廖雪峰 Python & JS & Git 教程PDF版 链接:F. 求看python 统计中文词频的代码,有一个地方不懂 求大神
首先要说明一个概念:gbk编码里一个中文字符的‘长度’是2。
str='中国'#gbk编码
要取得'中'这个字符,需要用分片str[0:2],而不是索引str[0]。
以z4为例,下面这些代码的效果是这样的。
x='同舟共济与时俱进艰苦奋斗'
i+=z4.findall(x)#返回['同舟共济','与时俱进','艰苦奋斗']
i+=z4.findall(x[2:])#返回['舟共济与','时俱进艰']
i+=z4.findall(x[4:])#返回['共济与时','俱进艰苦']
i+=z4.findall(x[6:])#返回['济与时俱','进艰苦奋']
目的是取得所有连续4字中文字符串。
G. 希望介绍个学Python的好网站或者下载资源,或者书本。采纳后追加~!谢谢分享
网络云课堂
http://study.163.com/,里面有很多不光是python的学习。
比如你找到这个地址中就有python的模块。
http://study.163.com/find.htm#/find/courselist?ct=31001&ct2=31013
H. 如何用python求出等式里面的其他的值
python本身不具备这种推导功能, 但Z3可以.
求解器 z3用来解一元一次方程肯定是大材小用了....它可以处理比这复杂得多的情况.
I. 如何使用Z3的Python接口
Z3支持许多平台以及多种语言接口,这里我们简单介绍其Python接口的使用。
以Mac OS X为例,下载Z3可执行文件后,要设置环境变量PATH和PYTHONPATH:
export PATH=$PATH:<installation path of z3>
export PYTHONPATH=$PYTHONPATH:<installation path of z3>
然后我们编辑一个简单的例子 stock.py:
#!/usr/bin/env python
from z3 import *
def main (argv):
ds = Real('ds')
fs = Real('fs')
ps = Real('ps')
origin = And ( Not (And (0<=ds, 1<=fs, 1<=ps)),
Implies (And (0<=ds, 0<=fs, 0<=ps), ds<=3),
Implies (And (0<=ds, 0<=fs, 0<=ps, fs<=1), ds+fs<=3),
Implies (And (0<=ds, 0<=ps, 1<=fs, ps<=1), ds+ps<=2))
solver2 = Solver()
solver2.add (origin)
solver2.push()
solver2.add (ds == dv/1000)
solver2.add (fs == fv/1000)
solver2.add (ps == pv/1000)
if solver2.check() == sat:
sat_count2 = sat_count2 + 1
solver2.pop()
从31到33行,声明3个实数变量,在35行我们定义一个逻辑公式并在47行加入当前环境中,77行调用check()方法并检查其返回值:sat -- 公式有解;unsat -- 公式无法满足。注意72,79行的push()和pop()方法是用来暂存和恢复环境。