为您找到搜索结果:5822个
Python爬虫小白入门(八)Python 爬虫 – 搭建环境
搭建Python爬虫环境,需要安装下面2个软件包:requests用于执行HTTP请求BeautifulSoup4 分析HTML页面可以使用pip安装这些依赖项:pipinstallrequestsBeautifulSoup4安装输出Kevin@QIKEGUC:UsersKevin>pipinstallrequestsBeautifulSoup4CollectingrequestsDownloadinghttps://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl(57kB)|████████████████████████████████|61kB15kB/sCollectingBeautifulSoup4Downloadinghttps://files.pythonhosted.org/packages/1a/b7/34eec2fe5a49718...
Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐
前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图。通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小。我的例子怎么都是爬取图片?(谁让你总是跟设计师小伙伴一起玩耍。。。)看来图片对于设计师来说还是有着很深的情节,那就看他用这些图片能做出什么样的作品啦,期待一下,后续会展示一下他的作品。其实爬取网易云音乐跟之前爬取的网站稍稍有点不同,当然,爬虫写的多了就觉得套路都是固定的,见招拆招而已。我的运行环境如下:系统版本Windows10。Python版本Python3.5,推荐使用Anaconda这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去Anaconda官网,选择Python3.5版本,然后下载安装。IDE我使用的是PyCharm,是专门为Python开发的IDE。这是JetBrians的产品,点我下载。上面提到过,网易云音乐的网页跟普通的网页相比主要有两点不同:网页是js动态加载的使用了iframe框架所以,首先,网页请求不能使用requests库,需要使用Selenium+PhatomJS。其...
Python爬虫小白入门(五)PhatomJS+Selenium第二篇
前文介绍了PhatomJS和Selenium的用法,工具准备完毕,我们来看看如何使用它们来改造我们之前写的小爬虫。我们的目的是模拟页面下拉到底部,然后页面会刷出新的内容,每次会加载10张新图片。大体思路是,用Selenium+PhatomJS来请求网页,页面加载后模拟下拉操作,可以根据想要获取的图片多少来选择下拉的次数,然后再获取网页中的全部内容。我的运行环境如下:系统版本Windows10。Python版本Python3.5,推荐使用Anaconda这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去Anaconda官网,选择Python3.5版本,然后下载安装。IDE我使用的是PyCharm,是专门为Python开发的IDE。这是JetBrians的产品,点我下载。3.1模拟下拉操作要想实现网页的下拉操作,需要使用Selenium的一个方法来执行js代码。该方法如下:driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")由此可见,使用execute_script方法...
Python爬虫小白入门(四)PhatomJS+Selenium第一篇
在上一篇博文中,我们的爬虫面临着一个问题,在爬取Unsplash网站的时候,由于网站是下拉刷新,并没有分页。所以不能够通过页码获取页面的url来分别发送网络请求。我也尝试了其他方式,比如下拉的时候监控http请求,看看请求是否有规律可以模拟。后来发现请求并没有规律,也就是不能够模拟http请求来获取新的数据(也可能是我水平有限,哪位童鞋找到了规律一定要告诉我哦)。那么就只有模拟下拉操作了。想要模拟下拉操作,我们需要用到两个工具,一个是PhatomJs,一个是Selenium。PhatomJS其实就是一个没有界面的浏览器,最主要的功能是能够读取js加载的页面。Selenium实质上是一个自动化测试工具,能够模拟用户的一些行为操作,比如下拉网页。一直有个说法,Python+PhatomJS+Selenium是爬虫的无敌三件套,基本能够实现所有爬虫需求。OK,我们分别介绍下他们的使用,然后开始我们的实战。我的运行环境如下:系统版本Windows10。Python版本Python3.5,推荐使用Anaconda这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去A...
Python爬虫小白入门(三)BeautifulSoup库
上一篇演示了如何使用requests模块向网站发送http请求,获取到网页的HTML数据。这篇来演示如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据。updateon2016-12-28:之前忘记给BeautifulSoup的官网了,今天补上,顺便再补点BeautifulSoup的用法。updateon2017-08-16:很多网友留言说Unsplash网站改版了,很多内容是动态加载的。所以建议动态加载的内容使用PhantomJS而不是Request库进行请求,如果使用PhantomJS请看我的下一篇博客,如果是定位html文档使用的class等名字更改的话,建议大家根据更改后的内容进行定位,学爬虫重要的是爬取数据的逻辑,逻辑掌握了网站怎么变都不重要啦。我的运行环境如下:系统版本Windows10。Python版本Python3.5,推荐使用Anaconda这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去Anaconda官网,选择Python3.5版本,然后下载安装。IDE我使用的是PyCharm,是专门为Python开发的I...
Python爬虫小白入门(二)requests库
为什么要先说Requests库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种HTTP请求来获取网站的数据。网络上的模块、库、包指的都是同一种东西,所以后文中可能会在不同地方使用不同称谓,不要迷惑哦。结合一个实例来讲解吧。我的一个设计师小伙伴常去一些设计类网站收集素材,其中有个网站Unsplash里面美图特别多,所以想要把里面的图片都保存下来,这样咱们的小爬虫就登场了。说干就干,赶紧开始吧。先来准备环境系统版本我使用的是Windows10。好多小伙伴使用的是Mac,配置上基本相同。由于我多年混迹于微软的开发平台,经常使用VisualStudio、SQLServer啥的,用Windows用习惯了(其实主要是因为Qiong穷!)。所以这个教程我就以Windows系统为例了。Python版本我电脑装了好多个Python版本(学一个装一个。。。),不过推荐使用Anaconda这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去Anaconda官网,选择Python3.5版本,然后下载安装。IDE我使用的是PyCharm,是专门为Python开发的...
Python爬虫小白入门(一)入门介绍
你是不是在为想收集数据而不知道如何收集而着急?你是不是在为想学习爬虫而找不到一个专门为小白写的教程而烦恼?Bingo!你没有看错,这就是专门面向小白学习爬虫而写的!我会采用实例的方式,把每个部分都跟实际的例子结合起来帮助小伙伴儿们理解。最后再写几个实战的例子。我们使用Python来写爬虫,一方面因为Python是一个特别适合变成入门的语言,另一方面,Python也有很多爬虫相关的工具包,能够简单快速的开发出我们的小爬虫。本系列采用Python3.5版本,毕竟2.7会慢慢退出历史舞台~那么,接下来,你得知道什么是爬虫、爬虫从哪里爬取数据的,以及,学习爬虫都要学习哪些东西。来看看百度百科是如何定义的网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。什么?没看懂?没关系,我来给你解释一下打开一个网页,里面有网页内容吧,想象一下,有个工具,可以把网页上的内容获取下来,存到你想要的地方,这个工具就是我们今天的主角:爬虫。这样是不是更清晰了呢?既...
python爬虫 分页获取图片并下载
--刚接触python2天,想高速上手,就写了个爬虫,写完之后,成就感暴增,用起来顺手多了。1.源代码#coding=utf-8importurllibimportreclassPage():__slots__=('url','regex','arg')def__init__(this,url,regex,arg):ifnotarg:arg['download']=Falsearg['write']=Falsearg['outpath']=''this.filter=Filter(url,{'regex':regex,'custom':arg['custom']ifarg.has_key('custom')else''})this.url=url;this.outpath=arg['outpath']ifarg.has_key('outpath')else'...
python爬虫——多线程+协程(threading+gevent)
上一篇博客中我介绍了如何将爬虫改造为多进程爬虫,但是这种方法对爬虫效率的提升不是非常明显,而且占用电脑cpu较高,不是非常适用于爬虫。这篇博客中,我将介绍在爬虫中广泛运用的多线程+协程的解决方案,亲测可提高效率至少十倍以上。本文既然提到了线程和协程,我觉得有必要在此对进程、线程、协程做一个简单的对比,了解这三个程之间的区别。以下摘自这篇文章:http://www.cnblogs.com/guokaixin/p/6041237.html1、进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。2、线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通...
Python爬虫实例(六)多进程下载金庸网小说
目标任务:使用多进程下载金庸网各个版本(旧版、修订版、新修版)的小说代码如下: #-*-coding:utf-8-*-importrequestsfromlxmlimportetreefrommultiprocessingimportPoolimportosimportsysreload(sys)sys.setdefaultencoding('utf-8')headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:47.0)Gecko/20100101Firefox/47.0'}defdownload(title,url,filename):response=requests.get(url,headers=headers).texthtml=etree.HTML(response)pages=html.xpath('//div//p/text()')[2:]withopen(filename,'a')asf:f.write(title+'')forpageinpages:withopen(filename,'...
Python爬虫框架Scrapy实例(四)下载中间件设置
还是豆瓣top250爬虫的例子,添加下载中间件,主要是设置动态Uesr-Agent和代理IPScrapy代理IP、Uesr-Agent的切换都是通过DOWNLOADER_MIDDLEWARES进行控制,我们在settings.py同级目录下创建middlewares.py文件,包装所有请求。middlewares.py#-*-coding:utf-8-*-importrandomimportbase64fromsettingsimportUSER_AGENTSfromsettingsimportPROXIESclassRandomUserAgent(object):defprocess_request(self,request,spider):useragent=random.choice(USER_AGENTS)request.headers.setdefault("User-Agent",useragent)classRandomProxy(object):defprocess_request(self,request,spider):proxy=random.choice(PRO...
Python爬虫框架Scrapy实例(三)数据存储到MongoDB
任务目标:爬取豆瓣电影top250,将数据存储到MongoDB中。items.py文件#-*-coding:utf-8-*-importscrapyclassDoubanItem(scrapy.Item):#definethefieldsforyouritemherelike:#电影名title=scrapy.Field()#基本信息bd=scrapy.Field()#评分star=scrapy.Field()#简介quote=scrapy.Field()spiders文件#-*-coding:utf-8-*-importscrapyfromdouban.itemsimportDoubanItemclassDoubanmovieSpider(scrapy.Spider):name="doubanmovie"allowed_domains=["movie.douban.com"]offset=0url="https://movie.douban.com/top250?start="start_urls=(url+str(offset),)defparse(self,response):i...
Python爬虫实例(五) requests+flask构建自己的电影库
目标任务:使用requests抓取电影网站信息和下载链接保存到数据库中,然后使用flask做数据展示。爬取的网站在这里 最终效果如下:主页:可以进行搜索:输入水形物语点击标题进入详情页:爬虫程序#-*-coding:utf-8-*-importrequestsfromurllibimportparseimportpymysqlfromlxmlimportetreeheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/65.0.3325.181Safari/537.36','Referer':'http://www.dytt8.net/'}BASE_URL='http://www.dytt8.net'movie={}defcrawl_page_list(url):"""获取列表页标题和详情链接"""resp=requests.get(url,headers=headers)#replace,用?取代非法字符html=resp.content...
Python爬虫基础(四)Requests库的使用
requests文档首先需要安装:pipinstallrequestsget请求最基本的get:#-*-coding:utf-8-*-importrequestsresponse=requests.get("http://www.baidu.com/")添加headers及查询参数:#-*-coding:utf-8-*-importrequestskw={'wd':'秦时明月'}headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.99Safari/537.36"}#params接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()response=requests.get("http://www.baidu.com/s?",params=kw,headers=headers)#查看响应内容,response.text返回的是Unicode格式的数据printresponse.tex...
Python爬虫基础(三)urllib2库的高级使用
opener是urllib2.OpenerDirector的实例,其中urlopen是模块默认构建的opener。但是基本的urlopen()方法不支持代理、cookie等其他的HTTP/HTTPS高级功能。如果要支持这些功能,可以使用相关的Handler处理器来创建特定功能的处理器对象,然后通过urllib2.build_opener()方法使用这些处理器对象,创建自定义opener对象,最后使用自定义的opener对象,调用open()方法发送请求。 自定义一个简单的opener()-*-coding:utf-8-*-importurllib2#构建一个HTTPHandler处理器对象,支持处理HTTP请求http_handler=urllib2.HTTPHandler()#构建一个HTTPHandler处理器对象,支持处理HTTPS请求#http_handler=urllib2.HTTPSHandler()#调用urllib2.build_opener()方法,创建支持处理HTTP请求的opener对象open...