Python
未读12345678910111213141516171819202122232425262728293031323334## requests+Beautifulsoup爬取汽车之家新闻import requestsfrom bs4 import BeautifulSoupresponse=requests.get('https://www.autohome.com.cn/news/')response.encoding='gbk'with open('a.html','w',encoding='utf-8') as f: f.write(response.text)soup=BeautifulSoup(response.text,'lxml')news=soup.find(id='auto-channel-lazyload-article').select('ul li a')for tag in news: lin ...
一 介绍 一些网站会在正常的账号密码认证之外加一些验证码,以此来明确地区分人/机行为,从一定程度上达到反爬的效果,对于简单的校验码Tesserocr就可以搞定,如下 但一些网站加入了滑动验证码,最典型的要属于极验滑动认证了,极验官网:http://www.geetest.com/,下图是极验的登录界面 现在极验验证码已经更新到了 3.0 版本,截至 2017 年 7 月全球已有十六万家企业正在使用极验,每天服务响应超过四亿次,广泛应用于直播视频、金融服务、电子商务、游戏娱乐、政府企业等各大类型网站 对于这类验证,如果我们直接模拟表单请求,繁琐的认证参数与认证流程会让你蛋碎一地,我们可以用selenium驱动浏览器来解决这个问题,大致分为以下几个步骤 123456789101112131415#步骤一:点击按钮,弹出没有缺口的图片#步骤二:获取步骤一的图片#步骤三:点击滑动按钮,弹出带缺口的图片#步骤四:获取带缺口的图片#步骤五:对比两张图片的所有RBG像素点,得到不一样像素点的x值,即要移动的距离#步骤六:模拟人的行为习惯(先匀加速拖动后匀减速拖动),把需要拖动的总距离分成一段一段 ...
一 介绍 原来scrapy的Scheduler维护的是本机的任务队列(存放Request对象及其回调函数等信息)+本机的去重队列(存放访问过的url地址) 所以实现分布式爬取的关键就是,找一台专门的主机上运行一个共享的队列比如Redis, 然后重写Scrapy的Scheduler,让新的Scheduler到共享队列存取Request,并且去除重复的Request请求,所以总结下来,实现分布式的关键就是三点: 123##1、共享队列##2、重写Scheduler,让其无论是去重还是任务都去访问共享队列##3、为Scheduler定制去重规则(利用redis的集合类型) 以上三点便是scrapy-redis组件的核心功能 12345##安装:pip3 install scrapy-redis##源码:D:\python3.6\Lib\site-packages\scrapy_redis 二 scrapy-redis组件 1、只使用scrapy-redis的去重功能 使用共享去重队列+源码分析 1234567891011121314151617181920212223242526272 ...
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。 Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。整体架构大致如下 The data flow in Scrapy is controlled by the execution engine, and goes like this: The Engine gets the initial Requests to crawl from the Spider. The Engine schedules the Requests in the Scheduler and asks for the next Re ...
一 背景知识 爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,只用一个线程且采用串行的方式执行,那只能等待爬取一个结束后才能继续下一个,效率会非常低。 需要强调的是:对于单线程下串行N个任务,并不完全等同于低效,如果这N个任务都是纯计算的任务,那么该线程对cpu的利用率仍然会很高,之所以单线程下串行多个爬虫任务低效,是因为爬虫任务是明显的IO密集型程序。 关于IO模型详见链接:http://www.cnblogs.com/linhaifeng/articles/7454717.html 那么该如何提高爬取性能呢?且看下述概念 二 同步、异步、回调机制 1、同步调用:即提交一个任务后就在原地等待任务结束,等到拿到任务的结果后再继续下一行代码,效率低下 123456789101112131415import requestsdef parse_page(res): print('解析 %s' %(len(res)))def get_page(url): print('下载 %s' %url) re ...
Python
未读paramiko 一 介绍 12## 用于帮助开发者通过代码远程连接服务器,并对服务器进行操作。## pip3 install paramiko 二 通过用户名密码方式远程执行命令 12345678910111213141516171819import paramiko## 创建SSH对象ssh = paramiko.SSHClient()## 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())## 连接服务器ssh.connect(hostname='192.168.16.85', port=22, username='root', password='123456')## 执行命令stdin, stdout, stderr = ssh.exec_command('df')## 获取命令结果result = stdout.read()## 关闭连接ssh.close()print(result.d ...
Python
未读安装 1pip3 install pymysql 一 链接、执行sql、关闭(游标) 123456789101112131415161718192021222324import pymysqluser=input('用户名: ').strip()pwd=input('密码: ').strip()##链接conn=pymysql.connect(host='localhost',user='root',password='123',database='egon',charset='utf8')##游标cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示##cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)##执行sql语句sql='select * from userinfo where name="%s" and password=& ...
Python
未读b287d1b6e0bad61174d643199e7e340519a5ff6f3823822d82f8204f2dd22dcf75b6407adea6c9d9cc3ff389a6cb4796d77d962554297568dd336151faec49a9ebbdc334a6c4e91773e3220f4b528af4bd601bff42ae9637cff7c3b20e3978068ed5a60431d61370afb0bae3f228661303436f83e1c1887b187378a5fcef2783f031ce6c6f29b2bf8e9458256cf39b12d4acdb8742fea244ada11c8dfee96cf8f9a8bc59c9e393bd59dea51356c719be000ed190af83be8cce57f0c026d913e8b59a506750dad1e2065a8d7a486c39641f5fe1e99d8c781e45f9cc8e19bffe168596fb33e4ca492089952e4db116ef8e1b92895fbcc6c64de ...
##Beautifulsoup模块 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.你可能在寻找 Beautiful Soup3 的文档,Beautiful Soup 3 目前已经停止开发,官网推荐在现在的项目中使用Beautiful Soup 4, 移植到BS4 12345678910111213141516171819#安装 Beautiful Souppip install beautifulsoup4#安装解析器Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml .根据操作系统不同,可以选择下列方法来安装lxml:$ apt-get install Python-lxml$ easy_install lxml$ pip install lxml另一个可供选择的解析器是纯Python实现的 html5lib , html5lib的解析方 ...