基于Python爬虫技术的应用 曹晓娟 (江苏安全技术职业学院信息工程系 徐州1 摘来进一步阐释Python爬虫技术的简洁与先进性。 关键词Python 爬虫技术 应用 中图分类号TP311 文献标识码A 文章编号6535 221011) 要 对Python爬虫技术进行阐述,基于python的爬虫与其他语言相比有很多优势。通过爬去某个网站的所有新闻这个案例, Application of Crawler Technology Based on Python ZENG Xiaojuan (Department of Information Engineering, Jiangsu Safety Technology Career Academy Xuzhou 22101 1) Abstract The Python crawler technology is elaborated. I、he reptiles based on hon have many advantages compared with other languages.The simplicity and advancement of Python crawling technology is further illustrated by crawling through the case of all the news on a website. Keywords Python 一Crawler technology Application .弓I言本文主要是对Python爬虫技术进行阐述,基于pytho python里都有非常优秀的第三方,如Requests,mechanize,一 切变得很容易。 3.网页抓取后的处理 抓取的网页需要处理,比如过滤html标签,提取文本 的爬虫与其他语言相比的有很多优势。通过爬去某个网站 的所有新闻这个案例,来进一步阐释Pyth。 爬虫技术的简 洁与先进性。 等。python的beautifulsoap提供了简洁的文档处理功能,能 二、Python爬虫的概念 放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网 络抓取自己的猎物(数据)爬虫指的是:向网站发起请求, 获取资源后分析并提取有用数据的程序; 用极短的代码完成大部分文档的处理。 用户获取网络数据的方式: 方式1:浏览器提交请求一下载网页代码一解析成页面。 方式2:模拟浏览器发送请求(获取网页代码)一提取 如果我们把互联网比作一张大的蜘蛛网,数据便是存 四、爬虫的基本流程 从技术层面来说就是通过程序模拟浏览器请求站点的行 有用的数据一存放于数据库或文件中。 为,把站点返回的HTML代码/JSON数据,二进制数据(图片、 爬虫要做的就是方式2: 视频)爬到本地,进而提取自己需要的数据,存放起来使用。 1.发起请求 三、基于python的爬虫与其他语言相比的优势 1.抓取网页本身的接口。 2.相比与其他静态编程语言 使用http库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体等。 Request模块缺陷:不能执行Js和CSS代码。 如java,c#,c++,python抓取网页文档的接口更简洁;相 比其他动态脚本语言,如perl,shell,python的urllib2包提供 了较为完整的访问网页文档的API。抓取网页有时候需要 模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封 杀的。我们需要模拟user agent的行为构造合适的请求,譬 2.获取响应内容 如果服务器能正常响应,则会得到一个Response。 Response包含:html, son,图片,视频等。 3解析内容 .解析html数据:正则表达式(RE模块),第三方解析库 如模拟用户登陆、模拟session/cookie的存储和设置。在 如Beautifuls叫p,pyquery等。 ·62·办公自动化杂志 解析json数据:json模块。 解析二进制数据:以wb的方式写入文件。 self.iebaName=rawt_input(”请输入需要访问的新闻:”) self.beginPage=int(raw_input(”请输入起始页:”)) 1.保存数据 数据库(MySQL,Mongdb、Redis)。 文件一保存。 self.endPage=int(raw_input(”请输入终止页:”)) self.url=”http://tieba.baidu.com/f’ self.uaheader=_f..User-Agent”:”MoziUa/5.0(compatible; 五、http协议请求与响应 Request:用户将自己的信息通过浏览器(socket client) MSIE 9.0;Windows NT 6.1 Tfidenff5.0;”l #图片编号 发送给服务器(socket server) Response:服务器接收请求,分析用户发来的请求信息, 然后返回数据(返回的数据中可能包含其他链接。如:图 片,jS,CSS等) ps:浏览器在接收Response后,会解析其内容来显示给 用户,而爬虫程序在模拟浏览器发送请求,然后接收Re— sponse后,是要提取其中的有用数据。 六、request 1.请求方式 常见的请求方式:GET/POST。 2.请求的URL ud全球统一资源定位符,用来定义互联网上一个唯一 的资源例如:一张图片、一个文件、一段视频都可以用ud 唯一确定。 ur1编码 https://www.baidu.com/s?wd=图片。 图片会被编码(看示例代码), 网页的加载过程是: 加载一个网页,通常都是先加载document文档。 在解析document文档的时候,遇到链接,则针对超链接 发起下载图片的请求。 3.请求头 User-agent:请求头中如果没有user-agent客户端配置, 服务端可能将你当做一个非法用户host; cookies:cookie用来保存登录信息。 七、案例:尝试爬去某个网站的所有新闻 importos impoa urllib2 importurUib fromlxml import etree class Spider: def init(self): self.userName=1 deftiebaSpider(self): for page in range(sefl.beginPage,sefl.endPage+1): pn=(page一1) 50#page number word={’pn’:pn,’kw’:self.tiebaNamel word=urllib.urlencode(word)#转换成url编码格式 (字符串) myUrl=self.url+”?”+word #为 例:http:/hieba.baidu.com/f?kw=%E7%BE%8E%E5% A5%B3&pn=50 #调用页面处理函数load_Page #并且获取页面所有新闻链接 links=self.1oadPage(myUr1)#urllib2 test3.PY #获取页面内容 deflaodPage(self,ur1): req=urlilb2.Request(url,headem=self.ua_header) html=urllib2.udopen(req).read() #解析html为HTML DOM文档 selector=etree.HrI’ML(htm1) #抓取当前页面的所有新闻的url的后半部分,也就是 新闻编号 #http://tieba.baidu.corn/p/4884069807里的”p/4884069807” ilnks=selector.xpath(’//div[@class=”threadlist lzclearfix”】 /div/a[@rel=”noreferrer”]/@hmf) #links类型为etreeElementString列表 #遍历列表,并且合并为一个帖子地址,调用图片处理 函数laodlmage ofr link in links: link=”http://tieba.baidu.com”+link self.1oadlmage(1ink) #获取图片 deflaodImage(self。link): req=urllib2.Request(1ink,headers=self.ua_header) 办公自动化杂志·63· html=urllib2.uflopen(req).read() selector:etree.HTML(htmt) #模拟一ma 一函数: if name ==’main——’——: #获取这个新闻里面所有图片的src路径 imageLinks=selector.xpath(’//img【@class=”BDE_Image”】 /@src’) #首先创建爬虫对象 mySpider=Spider() #调用爬虫对象的方法,开始工作 mySpider.tiebaSpider() #依次取出图片路径,下载保存 forimageLink in imageLinks: 八、结束语 总的来说,Python是一个高层次的结合解释性、编译 性、互动性和面向对象的脚本语言。Python的设计具有很强 的可读性,相比其他语言经常使用英文关键字,其他语言 的一些标点符号,它具有比其他语言更有特色语法结构。 self.writelmages(imageLink) #保存页面内容 defwriteImages(self,imageLink): 将images里的二进制内容存人到userName文件中 print(imageLink) 在设计上更加简洁,运行效率高。使用起来更加方便,大众 更容易上手使用。 参考文献 print”正在存储文件%d…”%self.userName #1.打开一个文件,返回一个文件对象 ifle=open(’./images/’+str(self.userName)+’.prig’,’wb’) [1】浅析pythOn在地图处理中的运用fJ].王亚卿,方龙. 华东森林经理.2008(01). #获取图片里内容 images=urHib2.urlopen(imageLink).read() [2】基于Python的混合语言编程及其实现[J].罗霄,任 #调用文件对象write()方法,将page_html的内容写入 勇,山秀明.计算机应用与软件.2004(12). 到文件里 ifle.write(images) [3]TPython:一种扩充的Python语言 .余超,周天琳, 周晓宇,陈林,徐宝文.计算机与数字工程.2009(05). 作者简介 曾晓娟,1977年8月9日出生,女,江苏安全技术职业 #最后关闭文件 ifle.close() #计数器自增1 seIf.UserName+=1 学院,讲师,教育硕士,研究方向:计算机应用、动漫设计、 工业设计、软件设计。 (上接第45页) 2.家校联合。共同帮助学生建立良好的人生观和价值观 家庭是学生健康成长的坚实后盾,学校应跟家长建立 4.加强网络管理。树立网络监督平台 学校要占领网络阵地,树立良好的网络舆论平台。学校 长期的网络沟通机制,让家长了解孩子在学校的发展情 可以利用学生喜欢上网的特点,利用他们经常使用的微 况,家长也可以及时反馈学生在家里的表现。可以通过家 信、QQ、公众号平台等工具,发布学校各类活动,优秀学生 校通、QQ群、微信群的方式,加强沟通,家庭教育和学校教 事迹等,树立学生管理的品牌形象。在热门的贴吧一般都 育双管齐下。 有学校的贴吧,应让学生干部、优秀的学生多进行正面的 3.开展丰富的第二课堂,提高学生在校幸福感 宣传,对于网络上的不良行为要坚决制止。 学生之所以爱上网,主要原因是无事可干。如果能够抓 参考文献 住学生的兴趣,发挥学生的特长,五年制的学生虽然在学 [11何向阳,祁玉娟.对大学生网络行为失范的多视角分 习上比不上普通高中的孩子,但是他们中很多人的动手能 析fJ1.中国医学教育技术,2009,(3):207. 力是非常强的,学校可以通过社团的方式,发掘学生的第 [2】孙也.大学生网络行为分析及德育网络阵地的建设 J】.中国现代教育装备,2011,(5):160—161. 二特长,让他们重新找到自信。让学生在学校中找到自己 [的位置,肯定自己的能力,那么,网络就成为他在学习和工 作者简介 作中的有力助手,而不是他打发时间的工具了。 黄琏(1979一),讲师,工程硕士,从事数学课程教学工作。 ·64·办公自动化杂志