python爬虫与数据采集

#python爬虫技术#1-1需要通过python的urllib或者request建立请求通信机制#1导入python的url库,请求库,用于与网页进行通信请求'''fromurllib.requestimporturlopenurl="https://www.python.org/"response=urlopen(url)content=response.read()#需要解码content=content.decode("utf-8")print(content)#2直接URLopen打开的方式太直白,有时候我们需要委婉一点进行请求importurllib.requesturl="https://www.python.org/"request=urllib.request.Request(url)response=urllib.request.urlopen(request)content=response.read().decode("utf-8")print(response.geturl())print(response.info())#打印请求码print(respons...
代码星球 代码星球·2020-04-04

12.Python爬虫利器三之Xpath语法与lxml库的用法

LXML解析库使用的是Xpath语法:XPath是一门语言XPath可以在XML文档中查找信息XPath支持HTMLXPath通过元素和属性进行导航XPath可以用来提取信息XPath比正则表达式厉害XPath比正则表达式简单 lxml使用方法:fromlxmlimportetreetext='''<div><ul><liclass="item-0"><ahref="link1.html">firstitem</a></li><liclass="item-1"><ahref="link2.html">seconditem</a></li><liclass="item-inactive"><ahref="link3.html">thirditem</a></li><liclass="item-1"><ahref="link4.html">fourthitem</a></l...

9.Python爬虫利器一之Requests库的用法(一)

requests官方文档:http://cn.python-requests.org/zh_CN/latest/user/quickstart.htmlrequest是一个第三方的HTTP库 1.发起请求发起GET请求非常简单,直接使用requests的get方法即可。比方说下面的代码获取百度首页的信息。1importrequests23baidu_url='https://www.baidu.com'45response=requests.get(baidu_url)6print(response.content.decode())如果要在URL上附加参数,也非常简单,使用params参数传入字典即可。参数会自动附加到URL上,列表参数也会正确的附加。这里这个网站是一个HTTP调试网站,值得收藏。如果我们访问这个网站,它会将浏览器发送的请求头,用户代理、表单参数等信息以格式化JSON形式返回,对HTTP调试非常有帮助。1#基本Get请求2r=requests.get('http://httpbin.org/get')3#如果要加参数,可以利用params参数4payload...

8.Python爬虫实战一之爬取糗事百科段子

大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。那么这次为大家带来,Python爬取糗事百科的小段子的例子。首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来。1.抓取糗事百科热门段子2.过滤带有图片的段子1#coding:utf-82importurllib3importurllib24importre5page=16url='https://www.qiushibaike.com/hot/page/1/'+str(page)7user_agent='Mozilla/4.0(compatible;MSIE5.5;WindowsNT)'8headers={'User-Agent':user_agent}910try:11request=urllib2.Request(url,headers=headers)12response=urllib2.urlopen(request)13qiubaiPattern=re.compile('<div.*?author.*?>',re.S)14infos=re.fi...

6.Python爬虫入门六之Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。为什么要使用Cookie呢?Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了。在此之前呢,我们必须先介绍一个opener的概念。当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen。它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置。cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。C...

5.Python爬虫入门五之URLError异常处理

大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理。首先解释下URLError可能产生的原因:网络无连接,即本机无法上网连接不到特定的服务器服务器不存在在代码中,我们需要用try-except语句来包围并捕获相应的异常。下面是一个例子,先感受下它的风骚request=urllib2.Request('http://www.xxx.xom')try:urllib2.urlopen(request)excepturllib2.URLError,e:printe.reason我们利用了urlopen方法访问了一个不存在的网址,运行结果如下:[Errno11001]getaddrinfofailed它说明了错误代号是11004,错误原因是 getaddrinfofailed 2.HTTPErrorHTTPError是URLError的子类,在你利用urlopen方法发出一个请求时,服务器上都会对应一个应答对象response,其中它包含一个数字”状态码”。举个例子,假如response是一个”重定向&...

4.Python爬虫入门四之Urllib库的高级用法

有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers的属性。首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS等等,经过多次请求之后,网页的骨架和肌肉全了,整个网页的效果也就出来了。拆分这些请求,我们只看一第一个请求,你可以看到,有个RequestURL,还有headers,下面便是response,图片显示得不全,小伙伴们可以亲身实验一下。那么这个头中包含了许许多多是信息,有文件编码啦,压缩方式啦,请求的agent啦等等。其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent,例如下面的例子,这个例子只是说明了怎样设置的headers,小伙伴们看一下设置格式就好。url='http...

3.Python爬虫入门三之UrllibUrllib2库的基本使用

怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在于HTML中的,下面我们就写个例子来扒一个网页下来。1importurllib2importurllib234response=urllib2.urlopen("http://www.baidu.com")5printresponse是的你没看错,真正的程序就两行,把它保存成demo.py,进入该文件的目录,执行命令查看运行结果,会发现整个页面的源码就打印出来了。那么我们来分析这两行代码,第一行:response=urllib2.urlopen("http://www.baidu.com")首先我们调用的是urllib2库里面的urlopen方法,传入一个URL,这个网址是百度首页,协议是HTTP协议,当然你也可以把HTTP换做FTP,FILE,HTTPS等等,只是代表了一种访问控制协议,urlopen可以接...

2.Python爬虫入门二之爬虫基础了解

爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器HTML、JS、CSS等文件,浏览器解析出来,用户便可以看到形形色色的图片了。因此,用户看到的网页实质是由HTML代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些HTML代码,实现对图片、文字等资源的获取。URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互...

1.Python爬虫入门一之综述

要学习Python爬虫,我们要学习的共有以下几点:Python基础知识Python中urllib和urllib2库的用法Python正则表达式Python爬虫框架ScrapyPython爬虫更高级的功能首先,我们要用Python写爬虫,肯定要了解Python的基础吧,万丈高楼平地起,不能忘啦那地基,哈哈,那么我就分享一下自己曾经看过的一些Python教程,小伙伴们可以作为参考。1)慕课网Python教程曾经有一些基础的语法是在慕课网上看的,上面附有一些练习,学习完之后可以作为练习,感觉效果还是蛮不错的,不过稍微遗憾的是内容基本上都是最基础的,入门开始的话,就这个吧学习网址:慕课网Python教程2)廖雪峰Python教程后来,我发现了廖老师的Python教程,讲的那是非常通俗易懂哪,感觉也是非常不错,大家如果想进一步了解Python就看一下这个吧。学习网址:廖雪峰Python教程3)简明Python教程还有一个我看过的,简明Python教程,感觉讲的也不错学习网址:简明Python教程4)汪海的实验室这是我的本科实验室学长,入门的时候参考的他的文章,自己重新做了总结,后来这些系列文章又...

python爬虫匹配实现步骤

importrequests,reurl='https://movie.douban.com/top250'urlcontent=requests.get(url).text#正则'''实现步骤:1,先逐个匹配字段2.对各个字段正则进行拼接3,实现整体抓取id:.*?(d+)</em.*?title:'title.*?>(.*?)<'rat:.*?average.*?(d+.d).*?comment_num:.*?(d+)人.*'''com=re.compile('.*?(d+)</em.*?title.*?>(.*?)<.*?average.*?(d+.d).*?(d+)人',re.S)ret=com.finditer(urlcontent)foriinret:print({'id':i.group(1),'title':i.group(2),'rat':i.group(3),'comment_num':i.group(4)}) ...

python爬虫

importreimporturllibdefgetHtml(url):page=urllib.urlopen(url)html=page.read()returnhtmldefgetImg(html):reg=r'height="d{3,}"src="(.+?.jpg)"'imgre=re.compile(reg)imglist=re.findall(imgre,html)x=0forimgurlinimglist:urllib.urlretrieve(imgurl,'%s.jpg'%x)x+=1html=getHtml("http://tieba.baidu.com/p/4668255626")printgetImg(html)    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。  我们最常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。好吧~!其实你很厉害的,右键查看页面源代码...
代码星球 代码星球·2020-04-02

Python爬虫:Xpath语法笔记

 一、选取节点常用的路劲表达式:表达式描述实例 nodename选取nodename节点的所有子节点xpath(‘//div’)选取了div节点的所有子节点/从根节点选取xpath(‘/div’)从根节点上选取div节点//选取所有的当前节点,不考虑他们的位置xpath(‘//div’)选取所有的div节点.选取当前节点xpath(‘./div’)选取当前节点下的div节点..选取当前节点的父节点xpath(‘..’)回到上一个节点@选取属性xpath(’//@calss’)选取所有的class属性二、谓语谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点实例: 表达式结果xpath(‘/body/div[1]’)选取body下的第一个div节点xpath(‘/body/div[last()]’)选取body下最后一个div节点xpath(&lsquo...

python爬虫scrapy之登录知乎

下面我们看看用scrapy模拟登录的基本写法:  注意:我们经常调试代码的时候基本都用chrome浏览器,但是我就因为用了谷歌浏览器(它总是登录的时候不提示我用验证码,误导我以为登录时不需要验证码,其实登录时候必须要验证码的),这里你可以多试试几个浏览器,一定要找个提示你输入验证码的浏览器调试。  1、我们登录的时候,提示我们输入验证码,当验证码弹出之前会有个请求,我们打开这个请求,很明显,type是login,验证码无疑了,就算是看请求的因为名,你也应该知道这个就是验证码的请求,或者打开这个验证码的请求url,这。      验证码的图片,悲惨了,这怎么整。别着急。。    2、验证码提示我们要点击倒着写的字体,这。。。,爬虫和反爬虫就是无休止的互相折磨。这明显就是上面那个图片的信息。    3、机智的我,发现验证码的请求参数里面有三个参数,r是一个13位的数字,type是登录用的,lang很可疑,改改它,把cn给他改成en。mygod这不也是验证码么,就试试它了。      4、页面基本登录原理分析完了,我们接下来看看代码怎么写,首先我们重构scrapy的start_request...

python爬虫scrapy之downloader_middleware设置proxy代理

 一、背景:  小编在爬虫的时候肯定会遇到被封杀的情况,昨天爬了一个网站,刚开始是可以了,在settings的设置DEFAULT_REQUEST_HEADERS伪装自己是chrome浏览器,刚开始是可以的,紧接着就被对方服务器封杀了。代理:  代理,代理,一直觉得爬去网页把爬去速度放慢一点就能基本避免被封杀,虽然可以使用selenium,但是这个坎必须要过,scrapy的代理其实设置起来很简单。  注意,request.meta['proxy']=代理ip的APImiddlewares.pyclassHttpbinProxyMiddleware(object):defprocess_request(self,request,spider):pro_addr=requests.get('http://127.0.0.1:5000/get').textrequest.meta['proxy']='http://'+pro_addr#request.meta['proxy']='http://'+proxy_ip  设置启动上面我们写的这个代理settings.pyDOWNLOAD...
首页上一页...678910...下一页尾页