为您找到搜索结果:5834个
python3之Splash
Splash是一个javascript渲染服务。它是一个带有HTTPAPI的轻量级Web浏览器,使用Twisted和QT5在Python3中实现。QT反应器用于使服务完全异步,允许通过QT主循环利用webkit并发。一些Splash功能:并行处理多个网页获取HTML源代码或截取屏幕截图关闭图像或使用AdblockPlus规则使渲染更快在页面上下文中执行自定义JavaScript可通过Lua脚本来控制页面的渲染过程在Splash-Jupyter笔记本中开发SplashLua脚本。以HAR格式获取详细的渲染信息1、Scrapy-Splash的安装Scrapy-Splash的安装分为两部分,一个是Splash服务的安装,具体通过Docker来安装服务,运行服务会启动一个Splash服务,通过它的接口来实现JavaScript页面的加载;另外一个是Scrapy-Splash的Python库的安装,安装后就可在Scrapy中使用Splash服务了,下面我们分三部份来安装:(1)安装Docker#安装所需要的包:yuminstall-yyum-utilsdevice-mapper-persiste...
python3 web测试模块selenium
selenium是一个用于web应用程序测试工具,selenium测试直接运行在浏览器中,就像真正的用户在操作一样,支持的浏览器包括IE(7,8,9,10,11),mozillafirefox,safari,googlechrom,opera等,可使用java,python等多种语言编写用例脚本。SeleniumPython绑定提供了一个简单的API,可以使用SeleniumWebDriver编写功能/验收测试。通过SeleniumPythonAPI,您可以直观地访问SeleniumWebDriver的所有功能。SeleniumPython绑定提供了一个方便的API来访问SeleniumWebDrivers,如Firefox,Ie,Chrome,Remote等。目前支持的Python版本是2.7,3.5及更高版本1、selenium安装配置pip安装:pipinstallseleniumwheel安装:#下载wheel安装文件:https://pypi.python.org/pypi/selenium/#downloadspipinstallselenium-3.13.0-py2.py...
python3之MongoDB
1、MongoDB简介MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。主要特点:MongoDB是一个面向文档存储的数据库,操作起来比较简单和容易。你可以在MongoDB记录中设置任何属性的索引(如:FirstName="Sameer",Address="8GandhiRoad")来实现更快的排序。你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。MongoDb使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。Mongodb中...
python3csv与xlsx文件操作模块(csv、xlsxwriter)
1、CSV介绍CSV,全称为Comma-SeparatedValues,它以逗号分隔值,其文件以纯文本形式存储表格数据,该文件是一个字符序列,可以由任意数目的记录组成,每条记录有字段组成,字段间分隔符是逗号或制表符,相当于结构化的纯文本形式,它比Excel文件更简洁,用来存储数据比较方便2、CSV常用类与方法csv.reader(csvfile,dialect='excel',**fmtparams)遍历CSV文件对象并返回,csvfiel可以是任何支持迭代器协议的对象,如果csvfile是一个文件对象,它需要指定newline=''csv.writer(csvfile,dialect='excel',**fmtparams)写入数据到csv文件中,csvfile可以是具有写入方法的任何对象,如果csvfiel是一个文件对象,应该用newline=''指定换行符(unix上位'',windows上位'')#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2018/6/2711:44#@Author:Py.qi#@File:csv_file1.p...
python3解析库pyquery
pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便1、pyquery安装pip方式安装:$pipinstallpyquery#它依赖cssselect和lxml包pyquery==1.4.0-cssselect[required:>0.7.9,installed:1.0.3]#CSS选择器并将它转换为XPath表达式-lxml[required:>=2.1,installed:4.2.2]#处理xml和html解析库验证安装:In[1]:importpyqueryIn[2]:pyquery.textOut[2]:<module'pyquery.text'from'/root/pp1/.venv/lib/python3.6/site-packages/pyquery/text.py'>2、pyquery对象初始化pyquery首先需要传入HTML文本来初始化一个py...
python3之Django表单(一)
1、HTML中的表单在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器表单元素允许用户在表单种输入内容如,文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等。大多数情况下被用到的表单标签是输入标签(<input>),输入类型是由类型属性(type)定义的,大多数经常被用到的输入类型下面做简单介绍:(1)文本域(TextFields)文本域通过<inputtype="text">标签来设定,当用户要在表单种输入字母,数字等内容是,就会用到文本域,在大多数浏览器种,文本域的缺省宽度是20个字符:<form>姓名:<inputtype="text"name="username"><br></form>(2)密码字段密码字段通过标签<inputtype="password">来定义,密码字段字符不会明文显示,而是以星号或圆点替代:<form>...
python3之Django模型(一)
1、模型概述模型是关于您的数据的唯一,明确的信息来源,它包含您正在存储的数据的重要字段和行为。通常,每个模型映射到单个数据库表。每个模型都是一个子类的python类django.db.models.Model模型的每个属性表示一个数据字段综上所述,Django为您提供了一个自动生成的数据库访问API。简单实例:在app下的models中创建person类:classperson(models.Model):first_name=models.CharField(max_length=30)last_name=models.CharField(max_length=30)first_name和last_name是模型的命名字段,每个字段都被指定为一个类属性,并且每个属性映射到一个数据表的列上,上面的person模型会创建一个如下的SQL数据库表语句:CREATETABLEmyapp_person("id"serialNOTNULLPRIMARYKEY,"first_name"varchar(30)NOTNULL,"last_name"varchar(30)NOTNULL);其中表的名称以...
爬虫入门【11】Pyspider框架入门—使用HTML和CSS选择器下载小说
首先我们要安装好pyspider,可以参考上一篇文章。从一个web页面抓取信息的过程包括:1、找到页面上包含的URL信息,这个url包含我们想要的信息2、通过HTTP来获取页面内容3、从HTML中提取出信息来4、然后找到更多的URL,回到第2步继续执行~我推荐一部小说给大家《恶魔法则》。今天我们从网上将这部小说的内容按照章节下载下来。小说目录的url为https://www.ybdu.com/xiaoshuo/4/4646/我们现在控制台命令行中输入pyspiderall,命令,然后打开浏览器,输入http://localhost:5000/。点击右面的Create按钮,输入项目名称,点击创建即可。【插入图片,创建项目】创建项目之后,在浏览器出现一个框架,左面是结果显示区,最主要的是一个run命令。右面是我们输入代码的内容。由于这个代码编辑界面不太友好,建议我们将代码拷贝到pycharm中,编辑好或者修改好之后再复制回来运行。【插入图片,空白项目内容】我们如果访问https页面,一定要添加validate_cert=False,否则会报SSL错误。这一步主要是获取目录页。这个方法会获取...
爬虫入门【10】Pyspider框架简介及安装说明
Pyspider是python中的一个很流行的爬虫框架系统,它具有的特点如下:1、可以在Python环境下写脚本2、具有WebUI,脚本编辑器,并且有项目管理和任务监视器以及结果查看。3、支持多种数据库4、支持定义任务优先级,自动重试链接。。。5、分布式架构等等优点。pyspider的设计基础是:以python脚本驱动的抓取环模型爬虫。教程:http://docs.pyspider.org/en/latest/tutorial/文档:http://docs.pyspider.org/发布版本:https://github.com/binux/pyspider/releasesfrompyspider.libs.base_handlerimport*classHandler(BaseHandler):crawl_config={}@every(minutes=24*60)defon_start(self):self.crawl('http://scrapy.org/',callback=self.index_page)@config(age=10*24*60*60)defindex_pa...
【Python基础】装饰器的解释和用法
装饰器的用法比较简单,但是理解装饰器的原理还是比较复杂的,考虑到接下来的爬虫框架中很多用到装饰器的地方,我们先来讲解一下。我们定义了一个函数,没有什么具体操作,只是返回一个固定值请注意一下缩进defsample():return1print(sample())函数内部的变量和函数外的变量是不同的我们看一下下面的例子,locals()和globals()方法会得到局部变量和全局变量我们可以在函数中调用全局变量,但是无法在函数中改变全局变量的值global_string='Thisisaglobalstring!'defsample():local_string='Thisisalocalstring!'print(locals())print(globals())sample()下面的inner函数执行时,由于x不是局部变量,函数会自动扩大搜索范围,找到outer函数中的x。outer中的inner也是类似与一个变量,不过这个变量是在outer中定义的,所以会直接搜索到。defouter():x=1definner():print(x)inner()outer()下面的add和sub是标...
爬虫入门【9】Python链接Excel操作详解-openpyxl库
Openpyx是一个用于读写Excel2010各种xlsx/xlsm/xltx/xltm文件的python库。现在大多数用的都是office2010了,如果之前之前版本的可以使用xlrd读,xlwt写,这里就不介绍了。fromopenpyxlimportWorkbookwb=Workbook()#创建一个工作簿ws=wb.active#获取工作的激活工作表ws['A1']=42#在A1中插入内容ws.append([1,2,3])#这里其实是在第二行插入了3个数字,占用了三个单元格importdatetimews['A2']=datetime.datetime.now()#在A2中插入了当前时间,把上一句的那个1挤掉了wb.save('sample.xlsx')#保存到当前目录创建一个workbook一般创建workbook后至少会有一个worksheet,我们可以通过active属性来获取。我们还可以通过create_sheet()方法来创建新的worksheet。一般默认创建的sheet的名字是序列化的,我们可以更改title属性来设置想要的名称。一旦我们指定了名称,可以使用key...
爬虫实战【13】获取自己的动态代理ip池
在爬取一些比较友好的网站时,仍然有可能因为单位时间内访问次数过多,使服务器认定为机器访问,导致访问失败或者被封。如果我们使用不同的ip来访问网站的话,就可以绕过服务器的重复验证,使服务器以为使不同的人在访问,就不会被封了。网络上有很多提供代理ip的网站,我们经常使用的一个是西刺免费代理ip,url='http://www.xicidaili.com/'我们来看一下这个网站的构成:【插入图片,西刺代理页面】我们获取这个页面上的所有ip即可。一个合理的代理ip的格式是这样的:{'http':'http://106.46.136.112:808'}也就是说每个代理是一个字典,这个字典中可以有很多个ip,每个代理ip都是以http为key。当然考虑到字典的特性,如果我们只获取http为key的代理,那么这个字典中只能有一个元素。我们就简单点,只考虑http的情况。通过PyQuery来解析西刺的源代码,所有的ip都在一个tr里面,但是有些tr是标题,我们过滤一下就可以了。由于页面比较简单,这里就不做介绍了。我们以requests库为例:importrequests#这个字典可以只有一个键值对,如...
爬虫实战【12】使用cookie登陆豆瓣电影以及获取单个电影的所有短评
昨天我们已经实现了如何抓取豆瓣上的热门电影信息,虽然不多,只有几百,但是足够我们进行分析了。今天我们来讲一下如何获取某一部电影的所有短评论信息,并保存到mongodb中。豆瓣设置的反爬虫机制是比较简单的,我们可以通过selenium模拟浏览器登陆这种终极办法来绕过,但是更加有效率的方法是设置请求头信息的cookie,是豆瓣认为在访问的就是一个用户,而不是机器。【插入图片,我的cookie】我们首先要登陆自己的豆瓣账户,随便点击一个评论页面,在请求信息里面,找到cookie,保存下来。我们先看一下评论页面的url特点,或者说请求网址的构成。https://movie.douban.com/subject/26378579/comments?start=20&limit=20&sort=new_score&status=P&percent_type=一看上面的url,我们就能分析出来这又是一个参数传递的url,前面的地址是这部电影的url,我们通过昨天的学习,应该能够得到并且已经保存在数据库中了。【插入图片,评论url参数】改变start的值,就可以得到很多...
爬虫实战【11】Python获取豆瓣热门电影信息
之前我们从猫眼获取过电影信息,而且利用分析ajax技术,获取过今日头条的街拍图片。今天我们在豆瓣上获取一些热门电影的信息。首先,我们先来看一下豆瓣里面选电影的页面,我们默认选择热门电影,啥都不点了。【插入图片,豆瓣热门电影页面】在选电影这个框中其实有很多标签的,这个其实可以在url设置,后面讲,现在就用热门好了。下面每部电影罗列出来,包括电影封面,评分,电影名称等信息。最下面是加载更多选项,其实看到这个加载更多,我就意识到这个页面肯定是用ajax技术实现的,就跟今日头条街拍那次一样,只不过不采用向下滚动,而是点击按钮加载的方式。是不是这样的?我们看一下源代码。果然都是一些js,我就不放图了,大家自己看一下就好了。那么来看一下XHR了,果然下面有几个json文件,哈哈,猜测是正确的。【插入图片,XHR分析】这次的json信息很简介,一个subjects下面就是各个电影的具体内容了,我们通过json的loads方法,就能够得到里面的信息了。仍然是通过requests库来获取json信息,消息头的话,我们来看一下:【插入图片,消息头分析】这个url的前面部分是固定的,后面是一些参数,我们可以...
爬虫实战【10】利用Selenium自动登陆京东签到领金币
今天我们来讲一下如何通过python来实现自动登陆京东,以及签到领取金币。我们先来看一下京东的登陆页面,如下图所示:【插入图片,登陆页面】登陆框就是右面这一个框框了,但是目前我们遇到一个困呐,默认的登陆方式是扫码登陆,如果我们想要以用户民个、密码的形式登陆,就要切换一下。我们看一下这两种登陆方式是如何切换的,通过浏览器的元素检查,我们看一下两个标签。【插入图片,两种登陆方式】扫码登陆和用户登陆分别在一个div标签里面,我们可以通过css选择器选定用户登陆,使其下面的a标签的class为checked,接下来的一切就比较简单了。我们要获取到用户名输入框、密码输入框以及登陆按钮即可。【插入图片,用户登陆框】下面看一下实现的代码,假设我们通过FireFox浏览器模拟登陆吧。fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpecte...