吴裕雄--天生自然python学习笔记:编写网络爬虫代码获取北京市PM2.5 实时数据

掌握了前面所讲的正则表达式、网页解析以及BeautifulSoup抓取基本内容后,就可以编写网络爬虫代码获取数据了。从http://www.pm25x.com/网站抓取北京的PM2.5实时数据。抓取北京市PM2.5实时数据现在我们的目的很明确,就是取回北京市PM2.5当时的实时数值。因为这个结果会实时改变,所以你们实际取得的数值会和此时我在案例中抓取到的数据有所不同,但抓取数据的过程是完全相同的。  很多情况下,我们想要的数据井不在网站一级页面之中,从而不能直接抓取,要采用分步的方式抓取。打开htψ://www.pm25x.com/网站首页的源代码,通过Ctrl+F组合键搜索关键词“北京”,发现这个关键宇位于title值为”北京PM2.5”的<a>标签中。  通过下面语句就能很容易地把这个标签的内容抓下来:  我们从该网页的页面看到,北京市现在的PM2.5值为31,然后打开二级页面的源代码,搜索“31”(你做练习时不要也查31,要看看该网站实...

吴裕雄--天生自然python学习笔记:python爬虫与网页分析

我们所抓取的网页源代码一般都是HTML格式的文件,只要研究明白HTML中的标签(Tag)结构,就很容易进行解析并取得所需数据。HTML网页结构HTML网页是由许多标签(Tag)构成,标签需用。字符括起来。大部分标签成对出现,与开始标签对应的结束标签前多一个“/”字符,例如<html><斤itml>。少数标签非成对出现,如<imgsrc=’’image.g”〉。HTML网页主要结构如下:    比较简单的标签如“<title>标题</title>”,只包含标签名称及其内容,并没有属性;有些较复杂的标签,除标签本身外,还包含了一些属性,如“<imgsrc="image.jpg”width=200pxheight=320px>”,其中的scr、alt、width、height都是img标签的属性。从网页开发界面查看网页源代码当使用QQ/IE/Firefox浏览器浏览某个网站时,按下F12键就会打开网页的开发界面。我们以QQ浏览器为例,...

吴裕雄--天生自然python学习笔记:案例:用正则表达式查找邮件账号

抓取万水书苑“ht甲://www.wsbookshow.com/”网站中的所有E-mail账号。importrequests,reregex=re.compile('[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+')url='http://www.wsbookshow.com/'html=requests.get(url)emails=regex.findall(html.text)foremailinemails:print(email)  程序说明导入request包和re包。re包就是正则表达式Cregex),通过re.compile方法创建正则表达式对象regex.抓取“http:/川ww.wsbookshow.com/”网站的源代码。在html.text中查找所有E-mail账号,然后进行显示。 ...

吴裕雄--python学习笔记:爬虫基础

一、什么是爬虫爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。二、Python爬虫架构Python爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsou...

吴裕雄--python学习笔记爬虫包的更换

python3.x报错:Nomodulenamed'cookielib'或Nomodulenamed'urllib2'1.ModuleNotFoundError:Nomodulenamed'cookielib'Python3中,importcookielib改成importhttp.cookiejar,然后方法里cookielib也改成http.cookiejar。2.ModuleNotFoundError:Nomodulenamed'urllib2'Python3中urllib2用urllib.request替代。在Python官方文档里面已有说明:Note:Theurllib2modulehasbeensplitacrossseveralmodulesinPython3.0namedurllib.requestandurllib.error.The2to3toolwillautomaticallyadaptimportswhenconvertingyoursourcesto3.0.fromurllib.requestimporturlopenresponse=urlopen("ht...

吴裕雄--python学习笔记爬虫

importchardetimporturllib.requestpage=urllib.request.urlopen('http://photo.sina.com.cn/')#打开网页htmlCode=page.read()#获取网页源代码print(chardet.detect(htmlCode))#打印返回网页的编码方式{'encoding':'utf-8','confidence':0.99,'language':''}data=htmlCode.decode('utf-8')print(data)#打印网页源代码pageFile=open('E:\pageCode.txt','wb')#以写的方式打开pageCode.txtpageFile.write(htmlCode)#写入pageFile.close()#开了记得关获取其他信息打开pageCode.txt文件(也可以直接在原网页F12调试获取),查看需要获取数据的标签信息。比如我现在要拿图片写出图片的正则表达式:reg=r'src="(.+?.jpg)"'解释下吧——匹配以src="开头然后接一...

sql in not in 案例用 exists not exists 代替

SELECTdistinctcodeFROMStokewhereBigcodein(selectOpencodefromAppStoke)SELECTdistinctcodeFROMStokeAwhereexists(select1fromAppStokeBWHEREB.Opencode=A.Code) in用extist代替selectdistinct*fromStokewhereCodenotin(selectCodeFromAppStoke)selectdistinct*fromStokeAwherenotEXISTS(select1FromAppStokeBWHEREB.OpenCode=A.Code)not in 用notextist代替UpdateSCALEsetState='已入库'WHERECodein(selectOpenCodefromAppStore)UpdateSCALEsetState='已入库'WHEREEXISTS(select1fromAppStoreSWHERES.OpenCode=Code) ...
代码星球 代码星球·2020-05-23

pixijs shader 案例

pixijsshader案例constapp=newPIXI.Application({transparent:true});document.body.appendChild(app.view);//Createbackgroundimageconstbackground=PIXI.Sprite.from('/moban/bg_grass.jpg');background.width=app.screen.width;background.height=app.screen.height;app.stage.addChild(background);//Stopapplicationwaitforloadtofinishapp.stop();app.loader.add('shader','/moban/shader.frag').load(onLoaded);letfilter;//HandletheloadcompletedfunctiononLoaded(loader,res){//Createthenewfilter,arguments:(vertexShader,frame...
代码星球 代码星球·2020-05-23

PHP判断是不是爬虫的方法

PHP判断是不是爬虫的方法这个一般用于防止爬虫和seo优化(因为爬虫都是按照第一次打开显示的页面有些ajax等需要点击才能显示的就爬不到啦)<pre><?php//判断是否搜索引擎机器人访问functionisRobot(){$agent=strtolower(isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:'');if(!empty($agent)){$spiderSite=array("TencentTraveler","Baiduspider+","BaiduGame","Googlebot","msnbot","Sosospider+","Sogouwebspider","ia_archiver","Yahoo!Slurp","YoudaoBot","YahooSlurp","MSNBot","Java(Oftenspambot)","BaiDuSpider","Voila","Yandexbot","BSpider","twiceler","SogouSpider","Speedy...

nodejs爬虫获取网页信息

varhttp=require("https"); varfs=require('fs');variconv=require('iconv-lite');varcheerio=require('cheerio')functiongetWeb(url,charset){console.log(url);returnnewPromise((resolve)=>{http.get(url,function(res){vararrBuf=[];res.on("data",function(chunk){//chunk是一个buffer对象arrBuf.push(chunk);}).on("end",function(){varchunkAll=Buffer.concat(arrBuf);varstr=iconv.decode(chunkAll,charset)//汉字不乱码resolve(str)}).on('error',(err)=>{console.log(err);});});})}asyncfunctiongetSrcArr(host,path,page,pos...

webpack应用案例之美团app

记录自己的创建步骤,且对自己的错误进行纠正分析。...

asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码

重构的乐趣在于精简代码,模块化设计,解耦功能……而对异常处理的重构则刚好满足上述三个方面,下面是我的一点小心得。一、相关的学习在文章《精简自己20%的代码》中,讨论了异常的统一处理,并通过对异常处理的封装达到精简代码的目的。具体有两种处理方法:方法1:封装一个包含try{}catch{}finally{}的异常处理逻辑的方法类,将别的方法作为参数传入该方法,在页面内调用封装后的方法,大体代码如下: publicclassProcess{publicstaticboolExecute(Actionaction){try{action.Invoke();returntrue;}catch(Exceptionex){returnfalse;}finally{}}}二、在MVC站点上的应用先简单回顾一下以前的知识:以标准的三层结构来说,MVC对应表现层,其中Controller中的Action负责收集数据并把数据传递给业务逻辑层的功能;逻辑层通过调用数据访问层,获取数据并进行相应的业务逻辑处理,最终将处理后的数据返回至Model。最后将Model与View...

Android之TelephonyManager类的使用案例

 TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限。以下列出TelephonyManager类所有方法及说明:packagecom.ljq.activity;import java.util.List;import android.app.Activity;import android.content.Context;importandroid.os.Bundle;importandroid.telephony.CellLocation;importandroid.telephony.NeighboringCellInfo;import...

爬虫问题汇总 + 解决

dir_name_list=re.findall(r'<spanid="thread_subject">([A-Za-z0-9x80-xfff.()s[]-+]+)</span>',str) 使用其中的x80-xfff,网上有些教程写为x80-xff,实际使用中发现只能匹配双字节的中文,个人更改为三字节。dir_name.decode('gb2312').encode('utf-8')#urllib.urlretrieve(each_pic,pic_name)request=requests.get(each_pic,timeout=10,stream=True)withopen(pic_name,'wb')asfh:#Walkthroughtherequestresponseinchunksof1024*1024bytes,so1MiBforchunkinrequest.iter_content(10240*10240):#Writethechunktothefilefh.write(chunk)网上有说在socket中设置timeout,这样是不行的,tim...
代码星球 代码星球·2020-05-22

python之爬虫

importredefvalidateTitle(title):rstr=r"[/\:*?"<>|]"new_title=re.sub(rstr,"",title)returnnew_title说明:如上函数用以过滤/:*?'<>|以及table、空格(文件夹、文件名中也尽量不要使用空格)  ...
代码星球 代码星球·2020-05-22
首页上一页...2829303132...下一页尾页