python3 xpath和requests应用详解
根据一个爬取豆瓣电影排名的小应用,来简单使用etree和request库。
etree使用xpath语法。
importrequests importssl fromlxmlimportetree ssl._create_default_https_context=ssl._create_unverified_context session=requests.Session() foridinrange(0,251,25): URL='https://movie.douban.com/top250/?start='+str(id) req=session.get(URL) #设置网页编码格式 req.encoding='utf8' #将request.content转化为Element root=etree.HTML(req.content) #选取ol/li/div[@class="item"]不管它们在文档中的位置 items=root.xpath('//ol/li/div[@class="item"]') foriteminitems: #注意可能只有中文名,没有英文名;可能没有quote简评 rank,name,alias,rating_num,quote,url="","","","","","" try: url=item.xpath('./div[@class="pic"]/a/@href')[0] rank=item.xpath('./div[@class="pic"]/em/text()')[0] title=item.xpath('./div[@class="info"]//a/span[@class="title"]/text()') name=title[0].encode('gb2312','ignore').decode('gb2312') alias=title[1].encode('gb2312','ignore').decode('gb2312')iflen(title)==2else"" rating_num=item.xpath('.//div[@class="bd"]//span[@class="rating_num"]/text()')[0] quote_tag=item.xpath('.//div[@class="bd"]//span[@class="inq"]') iflen(quote_tag)isnot0: quote=quote_tag[0].text.encode('gb2312','ignore').decode('gb2312').replace('\xa0','') #输出排名,评分,简介 print(rank,rating_num,quote) #输出中文名,英文名 print(name.encode('gb2312','ignore').decode('gb2312'), alias.encode('gb2312','ignore').decode('gb2312').replace('/',',')) except: print('faild!') pass
程序运行结果:
补充知识:requests抓取以及Xpath解析
代码:
#requests抓取 importrequests #新浪新闻的一篇新闻的url url='http://news.sina.com.cn/s/2018-05-09/doc-ihaichqz1009657.shtml' res=requests.get(url) #查看编码方式 enconding=requests.utils.get_encodings_from_content(res.text) #print(enconding) #打印网页内容 html_doc=res.content.decode("utf-8") print(html_doc[:500]) #保存网页内容 withopen('test.html','w')asf: f.write(html_doc)
运行结果:
小学老师罚学生赤脚跑操场官方:将按规定处理|赤脚|学生|华龙网_新浪新闻 代码:
#xpath解析 fromlxmlimportetree #建立html的树 tree=etree.HTML(html_doc) #设置目标路径(标题) path_title='/html/body//h1[@class="main-title"]//text()' #提取节点 node_title=tree.xpath(path_title) print("==="*20) print(node_title[0]) #设置内容路径 path_content='//div[@class="article-content-left"]//div[@id="article"]//text()' #提取节点 node_content=tree.xpath(path_content) print("==="*20) print("。".join(node_content))运行结果:
============================================================ 小学老师罚学生赤脚跑操场官方:将按规定处理 ============================================================ 。原标题:潼南一小学体育老师罚学生赤脚跑操场续:区教委向华龙网发来情况说明。 。重庆客户端-华龙网5月9日消息,这两天,重庆潼南区朝阳小学二年级6班不少家长心疼不已,因为多个娃儿脚底被磨出了泡。一问才知道,是因为有些学生体育课上没穿运动鞋,被体育老师要求赤脚在操场上跑步。收到重庆网络问政平台这一投诉后,华龙网记者立即进行了调查。今(9)日,华龙网发布了。《重庆潼南一小学体育老师罚学生赤脚跑操场脚底磨出泡当地教委介入》。报道后,潼南教委高度重视并给华龙网传来官方的情况说明。。 。。[说明全文]。 。关于家长在华龙网投诉教师上体育课体罚学生的情况说明。 。潼南区朝阳小学体育教师邹老师于2018年5月7日上午上体育课时,发现该班有少部分名学生未按体育课的要求穿运动鞋。该教师认为,穿着凉鞋跑步对学生本人及他人存在安全隐患,塑胶跑道不会对学生光脚运动造成影响,于是就叫未穿运动鞋的学生,脱掉凉鞋进行随班热身跑步。当时邹老师未发现学生有异常情况,也未接到学生有异常情况的反映。后经家长反映到学校,有极少数光着脚跑步的学生有异常情况,学校庚即与部分家长进行了沟通,并及时调查了解了此事,并对该教师这种不恰当教学方法进行了批评教育,我们将按相关规定对该教师作出相应的处理。。 。重庆市潼南区教育委员会。 。2018年5月9日。 。来源:华龙网。 。责任编辑:张义凌。以上这篇python3xpath和requests应用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。