为您找到搜索结果:7374个
python3解析库lxml
lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高XPath,全称XMLPathLanguage,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择XPath于1999年11月16日成为W3C标准,它被设计为供XSLT、XPointer以及其他XML解析软件使用,更多的文档可以访问其官方网站:https://www.w3.org/TR/xpath/1、python库lxml的安装windows系统下的安装:#pip安装pip3installlxml#wheel安装#下载对应系统版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxmlpip3installlxml-4.2.1-cp36-cp...
python3之Django多数据库
1、定义数据库在django项目中,一个工程中存在多个APP应用很常见;有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接。在Django的setting中使用DATABASES设置定义数据库,可以将数据库映射到特定的别名字典中;DATABASES定义的是要给嵌套字典,该设置必须配置default默认数据库。默认使用SQLite进行单一数据库设置:DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':'mydatabase',}}如不使用默认数据库定义可以将默认配置为空字典形式:'default':{}(1)DATABASES内部选项:ATOMIC_REQUESTS:为True时数据库事务包装每个视图,默认为FalseAUTOCOMMIT:为False时禁用Django事务管理,默认为TrueENGINE:设置数据库类型'django.db.backends.postgresql''django.db.backends.mysql''django.db.backends.sqlite3'...
python3数据结构与算法
python内置的数据结构包括:列表(list)、集合(set)、字典(dictionary),一般情况下我们可以直接使用这些数据结构,但通常我们还需要考虑比如搜索、排序、排列以及赛选等一些常见的问题。如何巧妙的使用数据结构和同数据有关的算法,在collections模块中包含了针对各种数据结构的解决方法。1、序列分解为变量In[5]:a=(4,5,6)In[6]:x,y,z=aIn[7]:xOut[7]:4In[8]:zOut[8]:6In[9]:yOut[9]:5In[10]:b=['python',222,(2018,9,30)]#嵌套分解变量In[11]:p,n,(year,mon,day)=bIn[12]:pOut[12]:'python'In[13]:nOut[13]:222In[14]:yearOut[14]:2018In[15]:dayOut[15]:30#可以分解的对象只要是可迭代对象如字符串、文件、迭代器和生成器In[16]:s='py'In[17]:x,y=sIn[18]:xOut[18]:'p'#忽略某个值使用下划线代替In[19]:data='python'I...
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...
爬虫入门【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...
爬虫入门【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...
爬虫实战【9】Selenium解析淘宝宝贝-获取宝贝信息并保存
通过昨天的分析,我们已经能到依次打开多个页面了,接下来就是获取每个页面上宝贝的信息了。【插入图片,宝贝信息各项内容】从图片上看,每个宝贝有如下信息;price,title,url,dealamount,shop,location等6个信息,其中url表示宝贝的地址。我们通过查看器分析,每个宝贝都在一个div里面,这个div的class属性包含item。而所有的item都在一个div内,这个总的div具有class属性为items,也就是单个页面上包含所有宝贝的一个框架。因而,只有当这个div已经加载了,才能够断定页面的宝贝信息是可以提取的,所以再提取信息之前,我们要判断这个div的存在。对于网页源码的解析,这次我们使用Pyquery,轮换着用一下嘛,感觉还是PyQuery比较好用,尤其是pyquery搜索到的对象还能在此进行搜索,很方便。Pyquery的使用方法请查看我之前的文章,或者看一下API。下面我们依次来分析一下每项信息应该如何提取。1、Price【插入图片,price】可以看出,price的信息在一个div里面,具有clas属性price,我们如果通过text来获取的话,还会...
爬虫实战【8】Selenium解析淘宝宝贝-获取多个页面
作为全民购物网站的淘宝是在学习爬虫过程中不可避免要打交道的一个网站,而是淘宝上的数据真的很多,只要我们指定关键字,将会出现成千上万条数据。今天我们来讲一下如何从淘宝上获取某一类宝贝的信息,比如今天我们以“手机”作为关键词,举个例子。【插入图片,淘宝手机页面示意】上面是搜索框,下面显示了很多宝贝信息,最下面是翻页的控制按钮。【插入图片,淘宝手机页面源代码】我们看一下这个页面的源代码,发现都是一些js,还提示了要运行脚本才能显示。难道宝贝也是Ajax加载的?我们来找一下有没有数据信息。【插入图片,XHR中什么都没有】可惜XHR打开之后,发现并没有加载任何数据。遇到这种情况,我们可以选择通过Selenium模仿浏览器访问,这样能够加载到所有的内容,虽然比直接访问数据慢一些,但基本上什么网页都能爬到。我们先分析一下流程。一上来,我们要打开淘宝的首页,在搜索框中输入关键字,然后点击搜索按钮。【插入图片,主页内容解析】有两个元素是我们要获取到的,一个是搜索框,一个是搜索按钮。在Selenium中得到元素的方法,请回顾一下我之前写的入门文章,或者查看Selenium的API文档,不是很负责。在本文中...
爬虫实战【6】Ajax内容解析-今日头条图集
AJAX=AsynchronousJavaScriptandXML(异步的JavaScript和XML)。Ajax并不是新的编程语言,而是一种使用现有标准的新方法,当然也不是很新了,在97年左右,微软就发明了ajax的关键技术,但是并没有推广;随着Googleeath、googlesuggest和gmail的广泛应用,ajax才开始流行起来。ajax最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新网页的部分内容。ajax不需要任何浏览器插件,但是需要用户允许javascript的执行。运用XHTML+CSS来表达资讯;运用JavaScript操作DOM(DocumentObjectModel)来执行动态效果;运用XML和XSLT操作资料;运用XMLHttpRequest或新的FetchAPI与网页服务器进行异步资料交换;注意:AJAX与Flash、Silverlight和JavaApplet等RIA技术是有区分的。目前有很多使用ajax的应用案例,比如新浪微博,google地图,今日头条等。今天我们借助今日头条见一下ajax内容的解析,如何爬取这类网站的内容。前几天...
爬虫实战【5】送福利!Python获取妹子图上的内容
【插入图片,妹子图首页】哈,只敢放到这个地步了。今天给直男们送点福利,通过今天的代码,可以把你的硬盘装的满满的~下面就开始咯!假如我们知道某张图片的url,如何获取到这张图片呢?先看一下最简单的方法:【插入图片,单页url】我们获取到图片的内容,通过二进制流写入到文件中,并保存起来。这次偷懒啦,将所有图片都保存在当前目录下。importrequestsurl='http://i.meizitu.net/2017/11/24a02.jpg'pic=requests.get(url).contentpic_name=url.split(r'/')[-1]withopen(pic_name,'wb')asf:f.write(pic)竟然出错了,得到的图片竟然是这样的:【插入图片,反爬虫-防盗链】看来现在各种网站都开始反爬虫了,我们尝试一下加入一些伪装信息。估计是很多骚动青年都拿妹子图来练习爬虫了。。。经过探索,加入referer头信息,才能继续下载,这个referer对应的内容是该图片的母地址,也就是存放这个图片的网页的地址。可以啦,我们得到图片了,代码如下,做了一些修改,不直接打开图片地址...