python学习-第30课-爬虫2

一、BeautifulSoup

1.1.简介

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

1.2.安装

1.2.1.安装beautifulsoup4模块

pip3 install beautifulsoup4

1.2.2.安装lxml解析器模块

pip3 install lxml

1.2.3.安装html5lib解析器模块

pip3 install html5lib

1.3.beautifulsoup种类

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment

1.Tag

2.

二、webdriver

2.1.简介

Selenium是ThroughtWorks公司开发的一套Web自动化测试工具。
它分为三个组件:
Selenium IDE
Selenium RC (Remote Control)
Selenium Webdriver
Selenium IDE是firefox的一个插件,允许测试人员录制脚本并回放。
Selenium RC和Selenium Webdriver是测试框架,提供多种语言的API。不同的是,Selenium Webdriver以一种更底层、更灵活的方式来操作浏览器,并不仅仅使用JavaScript。这样它可以绕开浏览器的沙箱限制,实现Selenium RC不支持的框架、弹出窗口、页面导航、下拉菜单、基于AJAX的UI元素等控件的操作。以及,Selenium Webdriver不需要本地服务器。
Selenium 1.x版本只包含前两个组件。从2.0开始Webdriver加入其中。

主要是来解决https的加密问题

Webdriver在使用之前,不需要下载一个浏览器所对应用的驱动插件,请根据自己不同的浏览器版本,进行下载:
Google的推荐给大家一个百度地址:
链接:https://pan.baidu.com/s/1qZ2LfmW 密码:qixa
下载以后,并把chromdriver放在google.exe那个当前目录下面

示例

import os

import time
from selenium import webdriver

chromedriver="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.dirver"] = chromedriver
driver=webdriver.Chrome(chromedriver)

driver.get("http://www.python.org/")
time.sleep(10)
driver.quit()

2.2.选择器

1. find_elements_by_name(“test”)
页面:
<input type="text" name="passwd" id="passwd-id"  class=”input-class”/>
代码:
element = driver.find_elements_by_name(“passwd”)

2. find_elements_by_id()
element = driver.find_element_by_id(“passwd-id”)
    By.tagname()
element = driver.find_element_by_tagname(“input”)

3. find_element_by_class_name(‘input-class’)

4. find_elements_by_tag_name(‘iframe’)

DOM的Tag元素

用Tag name 定位元素的例子:
<iframe src="..."></iframe>

element = driver.find_elements_by_tag_name("iframe")

5. find_element_by_link_text()
页面:
<a href="http://www.google.com/search?q=baidu">baidu</a>
代码:
element = browser.find_elements_by_link_text("baidu")

6 xpath   这个特别强大,所有的元素都可以通过这个可以找到。
XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。
绝对路径: 根元素开始,及html开始用/      
相对路劲: 任意符合条件的元素 //
查找页面上所有的input元素://input
查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示,单/号)://form[1]/input
查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)://form[1]//input
查找页面上第一个form元素://form[1]
查找页面上id为loginForm的form元素://form[@id='loginForm']
查找页面上具有name属性为username的input元素://input[@name='username']
查找页面上id为loginForm的form元素下的第一个input元素://form[@id='loginForm']/input[1]
查找页面具有name属性为contiune并且type属性为button的input元素://input[@name='continue'][@type='button']
查找页面上id为loginForm的form元素下第4个input元素://form[@id='loginForm']/input[4]

2.3.控件操作

输入框;
element.clear()  清空输入框数据
element.sendkeys(“username”)   发送数据
element.text         获取文本的值
按钮:
element.click()

表单提交
element.submit()

单选和多选框
element.clear()
element = browser.find_elements_by_id(' checkbox')
##选择某个单选项:
element.click();
 

2.4.常用方法

browser.get_cookies()
browser.title           头名字
browser.close()
forward()
前进,browser.foeward()
.back()
后退,browser.back()
.refresh()
刷新,browser.refresh()
.current_url
返回当前页面url,browser.current_url

自动登录京东示例

import random
import time

import os
from selenium import webdriver


def randomSpleep(minS,maxS):
    time.sleep((maxS - minS) * random.random() + minS)

url="https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"
chromedriver="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.dirver"] = chromedriver
driver=webdriver.Chrome(chromedriver)


driver.get(url=url)
randomSpleep(1,3)
driver.find_elements_by_xpath('//a[@clstag="pageclick|keycount|login_pc_201804112|10"]')[0].click()
randomSpleep(1,3)
driver.find_element_by_id("loginname").clear()
randomSpleep(1,3)
driver.find_element_by_id("loginname").send_keys("139214309")
randomSpleep(1,3)
driver.find_element_by_id("nloginpwd").send_keys("xxxxx")
randomSpleep(3,5)
driver.find_element_by_id("loginsubmit").click()
randomSpleep(5,10)
print(driver.get_cookies())

driver.close()

登录12306示例

from selenium import webdriver

import random
import time

def randomSleep(minS, maxS):
    time.sleep((maxS - minS) * random.random() + minS)
browser = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")

url = "https://kyfw.12306.cn/otn/login/init"

browser.get(url=url)
print(browser.find_element_by_id("username").text)
browser.find_element_by_id("username").clear()
browser.find_element_by_id("username").send_keys("test123")
randomSleep(2, 5)
browser.find_element_by_id("password").send_keys("xxxxxxxxx")
randomSleep(1, 4)
time.sleep(6)
browser.find_element_by_id("loginSub").click()
randomSleep(2, 5)
print(browser.get_cookies())
browser.quit()

 

转载于:https://my.oschina.net/u/3865353/blog/1836332

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值