Selenium获取百度百科旅游景点的InfoBox消息盒

这篇具有很好参考价值的文章主要介绍了Selenium获取百度百科旅游景点的InfoBox消息盒。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(InfoBox),这也是毕业设计实体对齐和属性的对齐的语料库前期准备工作。希望文章对你有所帮助~

源代码

# coding=utf-8    
"""  
Created on 2015-09-04 @author: Eastmount   
"""    
    
import time            
import re            
import os    
import sys  
import codecs  
from selenium import webdriver        
from selenium.webdriver.common.keys import Keys        
import selenium.webdriver.support.ui as ui        
from selenium.webdriver.common.action_chains import ActionChains    
    
#Open PhantomJS    
driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")    
#driver = webdriver.Firefox()    
wait = ui.WebDriverWait(driver,10)  
global info #全局变量  
  
#Get the infobox of 5A tourist spots    
def getInfobox(name):    
    try:    
        #create paths and txt files  
        global info  
        basePathDirectory = "Tourist_spots_5A"    
        if not os.path.exists(basePathDirectory):    
            os.makedirs(basePathDirectory)    
        baiduFile = os.path.join(basePathDirectory,"BaiduSpider.txt")    
        if not os.path.exists(baiduFile):    
            info = codecs.open(baiduFile,'w','utf-8')    
        else:    
            info = codecs.open(baiduFile,'a','utf-8')    
        
        #locate input  notice: 1.visit url by unicode 2.write files    
        print name.rstrip('\n') #delete char '\n'    
        driver.get("http://baike.baidu.com/")    
        elem_inp = driver.find_element_by_xpath("//form[@id='searchForm']/input")    
        elem_inp.send_keys(name)    
        elem_inp.send_keys(Keys.RETURN)    
        info.write(name.rstrip('\n')+'\r\n')  #codecs不支持'\n'换行  
        time.sleep(2)  
        print driver.current_url  
        print driver.title  
    
        #load infobox basic-info cmn-clearfix  
        elem_name = driver.find_elements_by_xpath("//div[@class='basic-info cmn-clearfix']/dl/dt")    
        elem_value = driver.find_elements_by_xpath("//div[@class='basic-info cmn-clearfix']/dl/dd")  
        for e in elem_name:  
            print e.text  
        for e in elem_value:  
            print e.text  
  
    
        #create dictionary key-value  
        #字典是一种散列表结构,数据输入后按特征被散列,不记录原来的数据,顺序建议元组  
        elem_dic = dict(zip(elem_name,elem_value))   
        for key in elem_dic:    
            print key.text,elem_dic[key].text    
            info.writelines(key.text+" "+elem_dic[key].text+'\r\n')    
        time.sleep(5)    
            
    except Exception,e: #'utf8' codec can't decode byte    
        print "Error: ",e    
    finally:    
        print '\n'    
        info.write('\r\n')    
    
#Main function    
def main():  
    global info  
    #By function get information     
    source = open("Tourist_spots_5A_BD.txt",'r')    
    for name in source:    
        name = unicode(name,"utf-8")    
        if u'故宫' in name: #else add a '?'    
            name = u'北京故宫'    
        getInfobox(name)    
    print 'End Read Files!'    
    source.close()    
    info.close()    
    driver.close()    
    
main()  

​​​​​​

运行结果


        主要通过从F盘中txt文件中读取国家5A级景区的名字,再调用Phantomjs.exe浏览器依次访问获取InfoBox值。同时如果存在编码问题“'ascii' codec can't encode characters”则可通过下面代码设置编译器utf-8编码,代码如下:
 

#设置编码utf-8  
import sys   
reload(sys)    
sys.setdefaultencoding('utf-8')  
#显示当前默认编码方式  
print sys.getdefaultencoding()  

Selenium获取百度百科旅游景点的InfoBox消息盒,selenium,测试工具

Selenium获取百度百科旅游景点的InfoBox消息盒,selenium,测试工具

对应源码


        其中对应的百度百科InfoBox源代码如下图,代码中基础知识可以参考我前面的博文或我的Python爬虫专利,Selenium不仅仅擅长做自动测试,同样适合做简单的爬虫。

Selenium获取百度百科旅游景点的InfoBox消息盒,selenium,测试工具

编码问题


        此时你仍然可能遇到“'ascii' codec can't encode characters”编码问题。
Selenium获取百度百科旅游景点的InfoBox消息盒,selenium,测试工具

       它是因为你创建txt文件时默认是ascii格式,此时你的文字确实'utf-8'格式,所以需要转换通过如下方法。

import codecs  
  
#用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode  
if not os.path.exists(baiduFile):    
    info = codecs.open(baiduFile,'w','utf-8')    
else:    
    info = codecs.open(baiduFile,'a','utf-8')  
      
#该方法不是io故换行是'\r\n'  
info.writelines(key.text+":"+elem_dic[key].text+'\r\n')    

总结


       你可以代码中学习基本的自动化爬虫方法、同时可以学会如何通过for循环显示key-value键值对,对应的就是显示的属性和属性值,通过如下代码实现:      

 elem_dic = dict(zip(elem_name,elem_value))


       但最后的输出结果不是infobox中的顺序,why? 
       最后希望文章对你有所帮助,还有一篇基础介绍文章,文章来源地址https://www.toymoban.com/news/detail-720582.html

到了这里,关于Selenium获取百度百科旅游景点的InfoBox消息盒的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据分析:旅游景点销售门票和消费情况分析

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 旅游景区作

    2023年04月08日
    浏览(57)
  • 【网站项目】基于jsp的199旅游景点管理系统

    🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹 赠送计算机毕业设计600个选题excel文件,帮助大学选题。 赠送开题报告模板,帮助书写开题报告。 作者完整代码目录供你选择: 《Springboo

    2024年01月21日
    浏览(59)
  • 基于Java(SpringBoot框架)毕业设计作品成品(44)旅游景点旅游线路旅游网站管理系统设计与实现

    博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月06日
    浏览(54)
  • Java基于springboot开发的景点旅游项目

    演示视频 https://www.bilibili.com/video/BV1cj411Y7UK/?share_source=copy_webvd_source=11344bb73ef9b33550b8202d07ae139b 主要功能:用户可浏览搜索旅游景点(分为收费和免费景点),购票(支持多规格套餐购票),也可发布游记,评论。查看订单退款等(页面适配手机)。 角色:管理员+注册用户 技

    2024年02月05日
    浏览(61)
  • Python旅游景点数据大屏 爬虫+实时监控系统 旅游数据可视化 大数据 毕业设计

    1、系统功能 可视化: (1)数据可视化,实现中国地图、动态柱状图、饼图、环图、漏斗图等方式对数据库数据分析 (2)百度热力图展示景点销售数据 爬虫: **去哪儿网**热门景点数据爬虫,解析后存储入mysql数据库中 实现功能 (1)爬虫:爬取去哪儿网的热门景点数据,

    2024年02月13日
    浏览(50)
  • 基于Python热门旅游景点数据分析系统设计与实现

    博主介绍 : ✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 java项目精品实战

    2024年02月11日
    浏览(49)
  • 基于PYTHON django四川旅游景点推荐系统

    摘 要 基于四川旅游景点推荐系统的设计与实现是一个专为四川旅游景点为用户打造的旅游网站。该课题基于网站比较流行的Python 语言系统架构,B/S三层结构模式,通过Maven项目管理工具进行Jar包版本的控制。本系统用户可以发布个人游记,查看景点使用户达到良好的旅游体验

    2024年02月02日
    浏览(70)
  • 大数据毕业设计Python+Django旅游景点评论数据采集分析可视化系统 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习 人工智能 计算机毕业设计

    毕业论文(设计)开题报告 学生姓名 学  号 所在学院 信息工程学院 专  业 指导教师姓名 指导教师职称 工程师 助教 指导教师单位 论文(设计)题目 基于朴素贝叶斯算法旅游景点线上评价情感分析 开  题  报  告  内  容 选题依据及研究内容(国内、外研究现状,初步

    2024年04月17日
    浏览(66)
  • 基于spark的热门旅游景点门票数据可视化分析系统

    热门旅游景点数据分析系统综合网络空间开发设计要求。目的是将传统管理方式转换为在网上管理,完成热门旅游景点数据分析管理的方便快捷、安全性高、交易规范做了保障,目标明确。热门旅游景点数据分析系统功能主要包括个人中心、门票信息管理、名宿信息管理、系

    2024年04月14日
    浏览(59)
  • 基于hive的安顺旅游景点数据分析的设计与实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 ✌ 主要内容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年03月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包