,今天我们就来谈谈python在爬虫及实际应用方面的小技巧

一、python爬取wooyun镜像站文章

代码放出来吧,两个程序,一个抓来图片放在本地,一个抓来页面源码:

wooyun_spider:

[Python] 纯文本查看 复制代码#coding: utf-8

import requests

from bs4 import BeautifulSoup

import re

import os

def dopost(url):

r = requests.get(url, timeout=6)

if r.status_code == 200:

return r.content

def bsparser(content):

soup = BeautifulSoup(content, 'html.parser', from_encoding='utf-8')

bqs = soup.find_all('a', href=re.compile(r'/wooyun\-\d+\-\d+\.html'))

return bqs

dic = {}

if __name__ == '__main__':

if os.path.exists(r'd:\wooyun'):

print 'd://wooyun dir exists...spider begin'

else:

os.mkdir(r'd:\wooyun')

print 'mkdir d://wooyun...spider begin'

for i in range(1,5):

ii = '%d' % i

url = 'http://wy.hxsec.com/search?keywords=&&content_search_by=by_bugs&&search_by_html=False&&page=' + ii

content = dopost(url)

bqs = bsparser(content)

for bq in bqs:

dic[bq.get_text()] = bq['href']

#for k in dic.keys ;for v in dic.values ;

for (k, v) in dic.items():

#print k, v

try:

con = dopost(v)

file_str = 'd://wooyun//' + k.encode('gbk').replace(r'/' or r'|', '') + '.html'

with open(file_str, 'w') as f:

f.writelines(con)

print k + 'is ok'

except:

print k + 'is error'

pass

dic.clear()

2.wooyun_spider_img:

[Python] 纯文本查看 复制代码#coding: utf-8

import requests

from bs4 import BeautifulSoup

import re

import os

def dopost(url):

r = requests.get(url, timeout=6)

if r.status_code == 200:

return r.content

def bsparser(content):

soup = BeautifulSoup(content, 'lxml', from_encoding='utf-8')

bqs = soup.find_all('a', href=re.compile(r'/wooyun\-\d+\-\d+\.html'))

return bqs

def bsparser_img(content):

soup = BeautifulSoup(content, 'lxml', from_encoding='utf-8')

imgs = soup.find_all('img', src=re.compile(r'full/\w+\.jpg'))

return imgs

dic = {}

if __name__ == '__main__':

if os.path.exists(r'd:\wooyun\full'):

pass

else:

os.mkdir(r'd:\wooyun\full')

print 'img_spider begin'

for i in range(1,5):

url = 'http://wy.hxsec.com/search?keywords=&&content_search_by=by_bugs&&search_by_html=False&&page=1'

content = dopost(url)

bqs = bsparser(content)

for bq in bqs:

dic[bq.get_text()] = bq['href']

#for k in dic.keys ;for v in dic.values ;

for (k, v) in dic.items():

#print k,v

try:

con = dopost(v)

except:

print v + ' err'

continue

try:

imgs = bsparser_img(con)

for img in imgs:

img_con = dopost('http://static.hx99.net/static/bugs/' + img['src'])

#print img['src']

file_str = 'd://wooyun/' + img['src']

with open(file_str,'wb') as f:

f.write(img_con)

except:

print img['src'] + ' err'

dic.clear()

只用第一个程序是不行的,看看截图:

wooyun_spider1.PNG (179.19 KB, 下载次数: 56)

2017-2-2 12:30 上传

看看wooyun目录:

wooyun_spider2.PNG (213.01 KB, 下载次数: 41)

2017-2-2 12:31 上传

打开html文件:

wooyun_spider5.PNG (144.89 KB, 下载次数: 41)

2017-2-2 12:32 上传

图片是失效的,因为我们本地没有这些图片,运行第二个程序,把图片抓下来:

wooyun_spider3.PNG (325.23 KB, 下载次数: 49)

2017-2-2 12:33 上传

看看现在打开html文件:

wooyun_spider4.PNG (661.76 KB, 下载次数: 40)

2017-2-2 12:34 上传

图片有效了,程序里只是抓取4页,又需要可以改下for循环,理论上可以抓取所有文章,但是比较慢~~

二、python监听&&模拟 鼠标

源码如下,用到了winapi编程和pyhook,源码放出来,这个程序运行了之后将鼠标的滚轮滚动改变效果使之相当于鼠标左右键(就是滚轮上滚动,相当于鼠标左键按下再放开,下滚相当于右键点击再松开;当然你可以随意改,比如玩游戏要求要不停按右键,我可以利用py将滚轮映射为鼠标右键,作弊之利器啊哈哈)

[Python] 纯文本查看 复制代码# -*- coding: utf-8 -*-

import pythoncom

import pyHook

import time

import win32api

import win32con

def onMouseWheel(event):

if event.Wheel == 1:

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)

time.sleep(0.05)

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)

if event.Wheel == -1:

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0)

time.sleep(0.05)

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0)

return True

hm = pyHook.HookManager()

hm.MouseAll = onMouseWheel

hm.HookMouse()

pythoncom.PumpMessages()

三、py让你的qq窗口抖一抖 恶作剧

源码:

[Python] 纯文本查看 复制代码#coding: utf-8

import ctypes

import random

import win32con

import win32gui

#句柄 获取当前窗口位置 设置随机窗口大小 恢复窗口位置

class xyz(ctypes.Structure):

_fields_ = [('left', ctypes.c_int),

('top', ctypes.c_int),

('right', ctypes.c_int),

('bottom', ctypes.c_int)]

user32 = ctypes.windll.user32

HWND = win32gui.FindWindow("TXGuiFoundation",None)

xyzt = xyz()

user32.GetWindowRect(HWND, ctypes.byref(xyzt))

#xyzt里保存了当前窗口的原始位置

for i in range(2,200):

user32.SetWindowPos(HWND, None, xyzt.left+random.randint(1,i), xyzt.top-random.randint(1,i), xyzt.right-xyzt.left, xyzt.bottom-xyzt.top, win32con.SWP_SHOWWINDOW)

user32.SetWindowPos(HWND, None, xyzt.left, xyzt.top, xyzt.right-xyzt.left, xyzt.bottom-xyzt.top, win32con.SWP_SHOWWINDOW)

看看效果,运行了该程序,qq主窗口会抖一会,要是想恶作剧,可以改下时间甚至无限抖,不过不要慌,任务管理器里把这个程序停了就好了

win_shake.gif (2.11 MB, 下载次数: 56)

2017-2-2 12:49 上传

因为帧数问题,gif截成了这样。。凑活着看看吧。。

四、总结我把模拟鼠标和抖一抖qq主窗口的打包成了exe,双击就可以运行了(那个模拟鼠标的exe,和源码有点不一样,exe里只模拟了鼠标左键,上面源码模拟了左右键,有兴趣的自己打个包成exe去玩吧)

http://pan.baidu.com/s/1boTZPnx

新年快乐~~好困,去睡一觉撒

python的spider如何让鼠标不_python wooyun爬虫模拟鼠标等相关推荐

  1. python 捕获鼠标点击事件_Python捕捉和模拟鼠标事件的方法

    本文实例讲述了Python捕捉和模拟鼠标事件的方法.分享给大家供大家参考.具体分析如下: 这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮 ...

  2. python怎么识别鼠标的动作_Python捕捉和模拟鼠标事件的方法

    本文实例讲述了Python捕捉和模拟鼠标事件的方法.分享给大家供大家参考.具体分析如下: 这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮 ...

  3. java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件

    二.使用SWT中的鼠标键盘事件 在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下: (1).模拟鼠标事件 * UI Automation (for testing tools) s ...

  4. 【Python黑科技】常用的user_agent 浏览器头爬虫模拟用户(保姆级图文+实现代码)

    目录 1. 常用的浏览器请求头User-Agent 2. 随机获取一个浏览器头 3. 关于user_agent知识的介绍 一.基础知识篇: 1.浏览器标识 2.操作系统标识 3.加密等级标识 4.浏览 ...

  5. php鼠标点击事件,javascript模拟鼠标点击事件的实例代码

    javascript触发模拟鼠标点击事件 事件触发器就是用来触发某个元素下的某个事件,IE下fireEvent方法,高级浏览器(chrome,firefox等)有dispatchEvent方法. 一般 ...

  6. C++实现鼠标控制 封装常见的模拟鼠标、键盘的操作函数

    API 或 MFC 视窗程序 里 有 函数, 例如 API 函数 设位置: BOOL SetCursorPos( int x, int y); 参数是屏幕坐标x,y 头文件 Winuser.h 链接库 ...

  7. python监听键盘的库的名称_python实时监控键盘鼠标,pynput库的详细用法

    前言 本节为你详细介绍python的第三方库pynput监控鼠标键盘的用法,该库允许您控制和监视输入设备.目前,支持鼠标和键盘输入和监视. 对于每一种输入设备,它包含一个子包来控制和监控该种输入设备: ...

  8. python监听键盘输入_Python监听模拟鼠标键盘

    1.监听鼠标和键盘的输入 from pynput import keyboard,mouse def on_press(key): print('alphanumeric key {0} presse ...

  9. python鼠标事件_Python之pygame的鼠标事件

    鼠标 当显示模式设置后,事件队列就会开始收到鼠标事件.当按下和释放鼠标的按键时,会产生 pygame.MOUSEBUTTONDOWN和pygame.MOUSEBUTTONUP事件.这些事件包含一个bu ...

  10. wxpython frame鼠标拖动_Python wxpython模块响应鼠标拖动事件操作示例

    本文实例讲述了Python wxpython模块响应鼠标拖动事件操作.分享给大家供大家参考,具体如下: wxpython鼠标拖动事件小案例: #coding:UTF-8 import wx app = ...

最新文章

  1. css基础 设置链接颜色
  2. JDBC——入门知识【转】
  3. 今日arXiv精选 | 15篇ICCV 2021最新论文
  4. linux 硬软链接区别
  5. 各视频、各音频之间格式任意玩弄(图文详解)
  6. SDN火爆!未来五年年复合增长率达98%
  7. 聚类分析(一)基本思想
  8. 10.MongoDB连接模型(长连接vs短连接vs连接池)
  9. 024# 关于Adempiere过账日期和会计过账记录的解答
  10. Python使用scrapy框架编写自动爬虫爬取京东商品信息并写入数据库
  11. 导弹拦截(数据加强版)
  12. 磁盘阵列怎么组linux系统,Linux系统下如何设置磁盘阵列?
  13. Paper之EfficientDet: 《Scalable and Efficient Object Detection—可扩展和高效的目标检测》的翻译及其解读—续篇
  14. 企业微信搭建私域流量增长运营双管齐下
  15. 用JAVA写一个简单的21点游戏(不设置庄主的情况下)
  16. 5个理由,你值得拥有电子实验记录本(ELN)
  17. latex插入pdf后空很多行
  18. MySQl 面试重点_2.常见的索引面试题总结
  19. Python+Appium自动化测试框架
  20. android多渠道打包插件,Android几种多渠道打包的步骤详解

热门文章

  1. 计算机 随机分组的方法,最小化随机分组方法介绍及其SAS实现
  2. 【知乎热议】如何看待Momenta研发总监任少卿去了蔚来汽车?
  3. PS剪切蒙版怎么用?
  4. 关于NX UG11.0在visual studio中不能创建模板的问题
  5. 7、边沿触发-D型触发器
  6. 脉冲触发器和边沿触发器的区别
  7. html 转盘抽奖开发,html 大转盘抽奖
  8. 服务器硬盘品牌型号认识,服务器的硬盘和主板能和FBD内存搭配的,现在主流的是什么品牌和型号啊?...
  9. 正态性检验ks和sw区别_非参数检验思路总结,清晰理解就靠它了!
  10. cisco命令防ping_ACL配置禁止PING