私信小编01即可获取大量Python学习资料
因为我周围的小伙伴们天天跟我说的最多的一句话就是:空间第一条点赞。
所以说我还不如直接做一个自动点赞的代码呢,免得天天催我点赞。
首先既然是对 QQ空间的一系列操作,自然是先解决登陆方面,在这篇文章里面我就不过多介绍了,因为我上几期之前对QQ空间已经做了一定的介绍了。直接放出链接就好。欢迎看博主以前的文章
def search_cookie():
qq_number=input('请输入qq号:')
if not __import__('os').path.exists('cookie_dict.txt'):
get_cookie_json(qq_number)
with open('cookie_dict.txt', 'r') as f:
cookie=json.load(f)
return True
def get_cookie_json(qq_number):
password=__import__('getpass').getpass('请输入密码:')
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
login_url='https://i.qq.com/'
chrome_options=Options()
chrome_options.add_argument('--headless')
driver=webdriver.Chrome(options=chrome_options)
driver.get(login_url)
driver.switch_to_frame('login_frame')
driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="u"]').send_keys(qq_number)
driver.find_element_by_xpath('//*[@id="p"]').send_keys(password)
time.sleep(1)
driver.find_element_by_xpath('//*[@id="login_button"]').click()
time.sleep(1)
cookie_list=driver.get_cookies()
cookie_dict={}
for cookie in cookie_list:
if 'name' in cookie and 'value' in cookie:
cookie_dict[cookie['name']]=cookie['value']
with open('cookie_dict.txt', 'w') as f:
json.dump(cookie_dict, f)
return True
def get_g_tk():
p_skey=self.cookie['p_skey']
h=5381
for i in p_skey:
h +=(h << 5) + ord(i)
g_tk=h & 2147483647
当我们拿到cookie信息和g_tk这个参数之后,继续去寻找空间好友动态的XML在何处。
首先点到XML位置一个个查找,发现有一个feeds3_html_more很像,点进去发现的确是我们要找的url链接。
这个链接所需要的参数有很多,在这里列举出来
这些参数中类似于可变参数的一共有五个。
def get_space():
your_url='https://user.qzone.qq.com/' + str(qq_number)
html=requests.get(your_url,headers=headers,cookies=cookie)
if html.status_code==200:
qzonetoken=re.findall('window.g_qzonetoken=(.*?);',html.text,re.S)[1].split('"')[1]
return True
'rd': '0.9311604844249088',
'windowId': '0.51158950324406',
'usertime': str(round(time.time() * 1000)),
def get_g_tk():
p_skey=self.cookie['p_skey']
h=5381
for i in p_skey:
h +=(h << 5) + ord(i)
g_tk=h & 2147483647
我们拿到XML以及各个参数后,即可访问该网页获取其返回值了。
但是这个返回与其他的有一些不同的是,它不仅仅是个json文件,我们无法获取后直接转换成字典格式去给我们使用,这就很麻烦。
我们获取字符串后,首先先将前后不一致的都切片扔掉,之后经过一系列处理后发现,我们很难将这个看似像json格式的字符串转换成字典。
在这里我继续介绍一个第三方库demjson。
demjson 可以解決不正常的json格式数据
demjson的使用方法很简单。
encode将 Python 对象编码成 JSON 字符串decode将已编码的 JSON 字符串解码为 Python 对象
# 例子
# -*- coding: utf-8 -*-
import demjson
js_json="{x:1, y:2, z:3}"
py_json1="{'x':1, 'y':2, 'z':3}"
py_json2='{"x":1, "y":2, "z":3}'
data=demjson.decode(js_json)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
data=demjson.decode(py_json1)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
data=demjson.decode(py_json2)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
我们使用demjson直接将该字符串转换为耳熟能详的字典格式,提取其中的data的data,即为前八条动态的每个参数,但我们这里只要第一个说说的动态信息。
text=html.text[10:-2].replace(" ", "").replace('\n','')
json_list=demjson.decode(text)['data']['data']
qq_spaces=json_list[0]
我们拿到其信息后,先提取一些我们比较想知道的东西,比如名字、QQ号、发布时间、所获赞数、说说内容、说说地址等等结果。
在 qq_spaces 参数中我们发现里面有一个很长也很特殊的一个结果是 html 结果,这个结果里面很长,简单来看是个网页常规代码,应该是被JavaScript写入到网页中了,既然不是全部代码,那么只能用正则提取一下里面的具体我们需要的东西了。
content=str(qq_spaces['html'])
try:zanshu=re.findall('<spanclass="f-like-cnt">(.*?)</span>人觉得很赞</div>',content,re.S)[0]
except:return None
time_out=str(qq_spaces['feedstime'])
print("名字:"+str(qq_spaces['nickname']))
print("QQ号:"+str(qq_spaces['opuin']))
print("时间:"+time_out)
print('赞数:'+zanshu)
times=qq_spaces['abstime']
his_url=re.findall('data-curkey="(.*?)"',content,re.S)[0]
在QQ空间随便找个好友点个赞吧,这样我们才能接收到请求。
我们首先清空原来动态产生的抓包,直接点个赞发现关于dolike的url只有三个,第一个是个POST请求,应该是我们所需要的点赞网址。
我们获取到URL后,找到里面所需要的参数。发现一共有十一个参数,在这里猜测应该不存在加密参数。
既然参数没什么问题那就直接写代码吧。
def get_zan(times,his_url):
data={'g_tk': g_tk,'qzonetoken': qzonetoken}
post_data={
'qzreferrer': 'https://user.qzone.qq.com/'+str(qq_number),
'opuin': str(qq_number),
'unikey': str(his_url),
'curkey': str(his_url),
'from': '1',
'appid': '311',
'typeid': '0',
'abstime': str(times),
'fid': str(his_url).split('/')[-1],
'active': '0',
'fupdate': '1'
}
url='https://user.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/likes/internal_dolike_app?'
url=url + urllib.parse.urlencode(data)
html=requests.post(url,headers=headers,cookies=cookie,data=post_data)
if html.status_code==200:print("点赞成功" if len(html.text)==469 else "点赞失败")
因为树莓派并不是很不错的问题,这个代码做不到绝对的秒赞。
def run_tolike():
if os.path.exists('time_out.txt'):
with open('time_out.txt','r') as f:
time_out=f.read()
else:time_out=None
while True:
get_friends_list()
time.sleep(__import__('random').randint(0,5)) # 秒赞?
if not time_out or time_out !=time_out:
time_out=time_out
get_zan(times,his_url)
return True
else:log('说说无更新,等待中...')
with open('time_out.txt','w') as f:
f.write(str(times))
SEO必须要懂HTML,说的是一点都没错,不过其实是不需要全部都懂,最重点的你懂了会用,基本上都是事半功倍了。可以这么说一个不懂代码的优化人员不算是一个合格的好优化。下面就总结一下做优化,必须要懂得几个最重要的html代码,希望能帮到大家。
1.Title网站标题标签
Title标签有两个地方的用途一个是用在网站的主题说明,用来告诉网友这个网站的主旨是什么,是什么样的网站,一般用来说明网站主题的词2-3个为最佳。目前搜索引擎对Title的重视程度尤为重视所以建议慎重考虑关键词。
Title标签的第二个用法是,在A标签里面对链接文字强调说明的。鼠标经过会有提示,可以增加网站关键词的密度。
2.description描述标签
描述标签一般会出现在抓取的快照里面,对网站的收录SEO排名也是有一定的影响,不过现在搜索引擎都是智能化的,有时候抓取的并不是你自己所写的描述标签。而会根据用户搜索关键词相关度匹配。一般建议长度在100 个字左右不宜过长。
3.keywords关键词标签
关键词keywords设置现在在搜索比重上面也越来越不明显了,好多搜索已定提出可以放弃设置,因为搜索引擎能够自动抓取,建议适当设置3个左右即可。
H标签
H1标签一般出现在页面LOGO,或者单个文章的主标题部分。一个页面最好能控制在2个之内切不可过多。
H2标签一般会用在网站栏目或者小标题标题部分。
H3标签一般用在侧栏小标题子标题部分。
4.<b>和<strong>文字加粗标签
文字加粗着重强调这文字比较重要,它会告诉搜索引擎此文字,在整个页面文字中比较重要,所以一般加粗一些关键词,一篇文章设置3-5个为宜,不可整篇加粗或者整篇不加粗。
A标签中的,Nofollow权重不传递,_blank新窗口打开
rel标签的属性Nofollow权重不传递属性,一般用于友情链接,或者网站有转出站外的链接。
target标签的属性_blank新窗口打开,以保留用户在网站的停留时间,降低网站跳出率。
se_prerender_url标签目前还在研究,不过发现一些站长站都已经用上,搜索发现是谷歌吸引爬虫而出,目前尚不具体了解用途。
5.alt图片描述标签
因为图片不具有SEO属性,所以alt越显重要,ALT主要是图片描述说明只用,用可以增加关键词密度,但切记不可过多频繁。
内部链接文字:10分
标题title:10分
域名:7分
H1,H2字号标题:5分
每段首句:5分
路径或文件名:4分
相似度(关键词堆积):4分
每句开头:1.5分
文本用法(内容):1分
title属性:1分 (不是<title>, 是A标签中title属性)
加粗或斜体:1分
alt标记:0.5分
Meta描述(Description属性):0.5分
Meta关键词(Keywords属性):0.05分
--------------------------------------------------------
想了解更多网站优化,网络营销,网站运营,SEO/SEM/DSP,微博微信营销
可以百度搜索王尘宇查看更多进行交流。
关注王尘宇个人QQ/微信:314111741
想绘图插件5.2(MxDraw5.2)
梦想CAD是专业的CAD插件(控件),经过10年研发,可轻松在网页、手机及BS/CS程序中使用CAD和浏览编辑DWG文件,不需安装AutoCAD即可运行。
控件核心代码使用VC++ 2010开发,至今已有三十万行代码规模;2007年发布第一个Release版本,经过多年的版本更迭与技术沉淀,控件已经十分快速稳定。在关键的 空间搜索 上使用了复杂度极低的算法,并且使用 汇编 优化,可以处理50万级的实体,图形的显示和处理效率比同类产品高出很多。
梦想绘图3d插件6.0(MxDraw6.03d)
使用二位控件的显示核心,基于 OpenCASCADE几何造型引擎 ,创建锥、柱、环等基本几何体,对几何体进行 布尔操作 ,如:相加、相减、相较、倒角、斜切、镂空、偏移、扫视;几何 空间关系计算 ,如:法线、点积、叉积、投影、拟合;几何体分析,如:质心、体积、曲率; 空间变换 ,如:平移、缩放、旋转。
梦想绘图手机版插件6.0(MxDrawAndroid6.0/MxDrawIOS6.0/)
使用二维控件的显示核心,并专对手机显示CAD图纸做了极速优化 ,是目前手机上显示DWG文件非常快的控件。
梦想CAD软件5.2(MxCAD5.0)
使用二维控件的显示核心,完全自主的二维CAD绘图软件,程序简洁、运行快速、功能齐全、稳定可靠;兼容 所有版本的DWG文件 ,支持 ARX的二次开发接口。
安装包下载
点击此处下载
运行环境
支持以下的32/64平台的系统:WindowsXP、Windows2000、WindowsVista、WindowsServer、Windows7、Windows8、Windows10。
支持以下的浏览器:IE所有版本、火狐、谷歌4.5及以前的版本、360浏览器(兼容模式)、QQ浏览器。
1
QQ浏览器使用了最新的谷歌浏览器内核,可使用QQ浏览器代替谷歌浏览器运行控件
支持语言
网页使用,支持 IE所有版本 。
控件支持如下的语言进行二次开发:VC、VB、CSharp、Delphi、HTML、ASP、JAVA、JavaScript、C++、 Builder、PHP、.Net、易语言、PowerBuild等。
编程接口
有一万多个接口函数 可供调用,提供Object Arx,AutoCAD VBA、COM开发接口,与AutoCAD二次开发类似的接口。
文件格式
控件支持自定义文件格式,扩展名为.mxg,mxg文件 稳定可靠 ,能 完整呈现DWG文件 ,支持图纸预览,加密;支持DWG、DXG、BMP、JPG、PNG、DWF、PDF、GIF、ICO DGN、SHP等。
支持SHX、TrueType字体。
控件与AutoCAD兼容,支持AutoCAD R14至AutoCAD 2017的 所有DWG图纸格式 ,并保证能支持将来新出现的AutoCAD文件格式。
网络功能
在控件支持的浏览器(见 运行环境 )中,控件可浏览服务器上的DWG文件,把DWG文件保存到服务器、在服务器后台运行控件、把DWG转成其他格式、提取信息等;支持FTP连接,二进制数据流加载。
在网页中使用控件演示
主要功能
DWG批量转到PDF、DWF,图纸信息搜索提取,测距离,算面积,图章, 批注 ,捕捉,正交,实体闪烁,曲线离散,偏移,打断,阵列,扩展数据读写,扩展记录读写,构造选择集,打印, 动画 , 自定义实体 ,组,右键菜单, 超连接 ,Undo,Redo,字典,图层,标注样式,线型样式,文字样式,视口,布局, 用户坐标系 ,系统变量,图纸比较,图纸剪切,界面切换,动态提示,google百度地图等。
打印功能
框选、全屏打印、后台批量打印、多个 图纸嵌套打印 、与 网页合并打印 等。
显示功能
鸟瞰、放大镜、视区平移、缩放、视区旋转、鹰眼、 透明显示 、背景、水印、网格、回溯显示、最佳显示、显示/隐藏工具条、浏览模式、 分屏显示 、矢量线、矢量圆、 动画 、动态标注、叠加对比显示等。
图元支持
主要实体有:直线,圆弧,Polyline,样条线,圆,椭圆,椭圆弧,IMAGE,点,块引用,外部块参照,射线,云线,文本,多行文本,对齐标注,旋转标注 ,半径标注,直径标注,角度标注,OLE对象,布局,视口,图层,线型,文字样式,命名字典,标注, 自定义实体 ,代理实体, 反应器 等。主要编辑有:移动,夹点拉伸,偏移,删除,复制,粘贴,旋转,缩放,镜向,离散,图案填充,实心填充,打碎,计算曲线长,面积,最jin点,交点,导角, 文字变线条 等。
编辑支持
移动、夹点拉伸、偏移、删除、复制、粘贴、旋转、缩放、镜向、离散、图案填充、实心填充、打碎、计算曲线长、面积、最近点、交点、倒角、文字变线条等。
几何运算
面积,夹角,向量,矩阵,旋转,缩放,最进点,最进距离,垂足,参数,镜向,平移,交点,打断,延伸, 最短路径 , 最长路径 。
支持事件
鼠标事件 , 键盘事件 ,选择修改,夹点编辑,打图纸完成,命令开始,命令执行完成,视区变化,动态提示,动态绘制,超连接点击,对象修改,命令执行,进度条变动,系统变量修改,控件初始化完成,等事件。
*请认真填写需求信息,我们会在24小时内与您取得联系。