selenium和BeautifulSoup4学习笔记

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题。本质是通过驱动浏览器完全模拟浏览器的操作。如:跳转、输入、单击、下拉框选择,来拿到网页渲染之后的结果,可支持多种浏览器。

coding = utf-8     #防止乱码
from selenium import webdriver    #导包,使用 selenium 的 webdriver 里的函数
import time #调入 time 函数
browser = webdriver.Chrome()     #操控谷歌浏览器,browser 可以随便取,但后面要用它操纵各种函数执行。
browser.get("http://www.baidu.com")  #跳转到百度页面
print driver.title # 把页面 title 打印出来
browser.implicitly_wait(30) #智能等待30秒
browser.maximize_window() #将浏览器最大化显示
browser.set_window_size(480, 800)  #设置浏览器的宽高,宽480、高800
browser.find_element_by_id("kw").send_keys("selenium")    #一个控件有若干属性 id 、name、(也可以用其它方式定位),百度输入框的 id 叫 kw ,我要在输入框里输入 selenium 。
#########百度输入框的定位方式##########
#通过 id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过 name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过 tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#通过 class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过 CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过 xphan 方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
#一般一个页面上不会出现相同的文件链接,通过文字链接link来定位也是一种简单有效的定位方式
browser.find_element_by_link_text("贴 吧").click()
#用链接的一部分文字进行匹配
browser.find_element_by_partial_link_text("贴").click()
browser.find_element_by_id("su").click()     #搜索的按钮的 id 叫 su ,我需要点一下按钮( click() )。
time.sleep(3) # 休眠3秒

browser.quit()     #退出并关闭窗口的每一个相关的驱动程序,有洁癖用这个。就是直接关闭浏览器
browser.close()    #关闭当前窗口(当前网页)

解决中文乱码问题
selenium2 python 在 send_keys()中输入中文一直报错,其实前面加个小 u 就解决了:
coding=utf-8
send_keys(u"输入中文")
需要注意的是 utf-8并不是万能的,我们需要保持脚本、浏览器、程序三者编码之
间的转换;如果 utf-8不能解决,可以尝试 GBK 或修改浏览器的默认编码。

#脚本要与 upload_file.html 同一目录
file_path = 'file:///' + os.path.abspath('upload_file.html')
driver.get(file_path)
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\selenium_use_c
ase\upload_file.txt')

Beautiful Soup4(简称bs4)库是一个在python爬虫设计中非常流行的数据分析提取库。将复杂html文档转换成一个复杂的树形结构,每个节点都是python对象,所有对象可以归纳为4种,Tag(标签)、NavigableString(可遍历字符串)、BeautifulSoup(bs对象)、Comment(注释内容)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值