分布式爬虫搭建系列 之一------python安装及以及虚拟环境的配置及scrapy依赖库的安装

python及scrapy框架依赖库的安装步骤:第一步,python的安装在Windows上安装Python首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python3.5对应的64位安装程序或32位安装程序(网速慢请移步国内镜像)或者通过输入网址https://www.python.org/downloads/选择要下载的版本,然后,双击运行下载的EXE安装包:如下图,并按照圈中区域进行设置,切记要勾选打钩的框,然后再点击Customizeinstallation进入到下一步 特别要注意勾上AddPython3.5toPATH,然后点“InstallNow”即可完成安装。对于上图中,可以通过Browse进行自定义安装路径,也可以直接点击Install进行安装,点击install后便可以完成安装了。 为了检查我们的python是否安装成功,我们运行Python进行检查:安装成功后,打开命令提示符窗口,敲入python后,会出现两种情况:情况一:看到上面的画面,就说明Python安装成功!情况二:得到一个错误:...

微信 登录 Scope 参数错误或没有 Scope 权限

//电脑端扫码授权登录publicstaticstringAuthUrl="https://open.weixin.qq.com/connect/qrconnect?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_login&state={2}#wechat_redirect"; //移动端直接授权登录publicstaticstringAuthUrl="https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_login&state={2}#wechat_redirect"; //获取 TokenpublicstaticstringTokenRequestUrl="https://api.weixin.qq.com/sns/oauth2/access_token...

微信小程序开发-IP地址查询-例子

微信小程序开发 小程序搜索框 IP地址查询 搜索查询 样例 微信小程序开发参考 https://mp.weixin.qq.com/debug/wxadoc/dev/component/search.wxml<viewclass="container"><viewclass="page-body"><viewclass="weui-search-bar{{searchFocusCss}}"id="searchBar"><viewclass="weui-search-bar__form"><viewclass="weui-search-bar__box"><iconclass="weui-icon-search"></icon><inputtype="text"class="weui-search-bar__input"id="searchInput"placeholder="输入IP"confirm-type="search"bindinp...

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...

Python爬虫基础(二)urllib2库的get与post方法

urllib2默认只支持HTTP/HTTPS的GET和POST方法一、Get方式      GET请求一般用于我们向服务器获取数据,比如说,我们用百度搜索,在百度搜索框中搜索“秦时明月”,拿到地址栏里有效url为:https://www.baidu.com/s?wd=秦时明月通过抓包得到其get的目标url为:https://www.baidu.com/s?wd=%E7%A7%A6%E6%97%B6%E6%98%8E%E6%9C%88这两个url其实是一样的,wd后面出现的字符串是“秦时明月”的url编码,于是我们可以尝试用默认的Get方式来发送请求。#负责url编码处理importurllibimporturllib2url="http://www.baidu.com/s"word={"wd":"秦时明月"}#转换成url编码格式(字符串)word=urllib.urlencode(word)#url首个分隔符就是?newurl=url+"?"+wordheaders={"Us...

Python爬虫基础(一)urllib2库的基本使用

       爬虫也就是所谓的网络数据采集,是一种通过多种手段收集网络数据的方式,不光是通过与API交互(或者直接与浏览器交互)的方式。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息。实践中,网络数据采集涉及非常广泛的编程技术和手段,比如数据分析、信息安全等。       要抓取网页数据,要做的就是向服务器发起请求并获取响应,而在Python中,我们可以使用urllib2这个库来实现。下面是一个发生请求并获取服务器响应的简单的例子:#-*-coding:utf-8-*-#导入urllib2库importurllib2#使用urllib2.urlopen()向指定的url发送请求,并返回服务器响应的类文件对象response=urllib2.urlopen("http://www.baidu.com")#类文件对象的read()方法可读取文件全部内容,返回字符串html=r...

Python爬虫scrapy-redis分布式实例(一)

目标任务:将之前新浪网的Scrapy爬虫项目,修改为基于RedisSpider类的scrapy-redis分布式爬虫项目,将数据存入redis数据库。 一、item文件,和之前项目一样不需要改变#-*-coding:utf-8-*-importscrapyimportsysreload(sys)sys.setdefaultencoding("utf-8")classSinanewsItem(scrapy.Item):#大类的标题和urlparentTitle=scrapy.Field()parentUrls=scrapy.Field()#小类的标题和子urlsubTitle=scrapy.Field()subUrls=scrapy.Field()#小类目录存储路径subFilename=scrapy.Field()#小类下的子链接sonUrls=scrapy.Field()#文章标题和内容head=scrapy.Field()content=scrapy.Field() 二、spiders爬虫文件,使用RedisSpider类替换之前的Spider类,其余地方做些许...

Python爬虫框架Scrapy实例(二)

目标任务:使用Scrapy框架爬取新浪网导航页所有大类、小类、小类里的子链接、以及子链接页面的新闻内容,最后保存到本地。大类小类如下图所示:点击国内这个小类,进入页面后效果如下图(部分截图):查看页面元素,得到小类里的子链接如下图所示:有子链接就可以发送请求来访问对应新闻的内容了。 首先创建scrapy项目#创建项目scrapystartprojectsinaNews#创建爬虫scrapygenspidersina"sina.com.cn" 一、根据要爬取的字段创建item文件:#-*-coding:utf-8-*-importscrapyimportsysreload(sys)sys.setdefaultencoding("utf-8")classSinanewsItem(scrapy.Item):#大类的标题和urlparentTitle=scrapy.Field()parentUrls=scrapy.Field()#小类的标题和子urlsubTitle=scrapy.Field()subUrls=scrapy.Field()#小类目录存储路径subFilena...

Python爬虫框架Scrapy实例(一)

目标任务:爬取腾讯社招信息,需要爬取的内容为:职位名称,职位的详情链接,职位类别,招聘人数,工作地点,发布时间。一、创建Scrapy项目scrapystartprojectTencent命令执行后,会创建一个Tencent文件夹,结构如下二、编写item文件,根据需要爬取的内容定义爬取字段#-*-coding:utf-8-*-importscrapyclassTencentItem(scrapy.Item):#职位名positionname=scrapy.Field()#详情连接positionlink=scrapy.Field()#职位类别positionType=scrapy.Field()#招聘人数peopleNum=scrapy.Field()#工作地点workLocation=scrapy.Field()#发布时间publishTime=scrapy.Field()三、编写spider文件进入Tencent目录,使用命令创建一个基础爬虫类:#tencentPostion为爬虫名,tencent.com为爬虫作用范围scrapygenspidertencentPostion"t...
首页上一页...3233343536...下一页尾页