美文网首页
request模块中的方法

request模块中的方法

作者: 岁月悄然飞逝徒留回忆_54a5 | 来源:发表于2018-12-30 22:43 被阅读0次

    Requests

    import requests

    url='http://example.test/secret'`

    response=requests.get(url,auth=('dan','h0tdish'))`

    response.status_code`

    200

    response.content`

    u``'Welcome to the secret page!'

    |

    只是在调用方法的时候增加了一个auth关键字函数
    我敢打赌你不用查文档也能记住。

    错误处理 Error Handling

    Requests对错误的处理也是很非常方面。如果你使用了不正确的用户名和密码,urllib2会引发一个urllib2.URLError错误,然而Requests会像你期望的那样返回一个正常的response对象。只需查看response.ok的布尔值便可以知道是否登陆成功。

    (https://www.jb51.net/article/63711.htm#)

    >>> response = requests.get(url,auth``=``(``'dan'``,``'wrongPass'``))

    >>> response.ok

    False

    |
    使用selenium进行爬虫
    1、挑选需求爬的URL地址,将其放入需求网络爬虫的队列,也可以把爬到的符合一定需求的地址放入这个队列中2、获取一个url进行DNS解析,获取其主机IP3、针对这个url地址将其页面加载下来(也就是这个页面的html或者jsp)加载下来,不同的框架有不同的页面处理方法,和抽取有用信息的方法,类似根据id选择抽取,根据标签抽取,根据class抽取,根据css抽取等。4、最后Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等 在这里我们介绍一种十分方便的爬虫工具:selenium,selenium爬虫个人感觉适合对那种需求登录的页面进行爬取,因为它本身可以加载浏览器驱动,模拟登录这个操作,然后把需求的静态页面加载进来。

      from selenium import webdriver
      import time
    
     browser = webdriver.Chrome()
      browser = webdriver.Firefox()
    
     help(webdriver)
    

    加载谷歌浏览器驱动,这里我使用的谷歌,你也可以下载firefox或者ie的驱动

    使用什么驱动则模拟该操作的就是这个浏览器,需要注意的是,chromedriver.exe对不同浏览器版本也是有自己版本的

    browser = webdriver.Chrome("D:\driver\chromedriver.exe")

    这里通过get请求需要模拟登录的页面

    browser.get("https://crm.xiaoshouyi.com/global/login.action")

    print(browser.page_source)

    browser.switch_to_frame("page_source")

    这里通过name选择器获取登录名和密码并把需要set值给放进去

     browser.find_element_by_name("loginName").send_keys("你的登录名")
     browser.find_element_by_name("password").send_keys("你的登录密码")
    这一步模拟点击登录
     browser.find_element_by_class_name("pg-btn-submit").click()
     browser.implicitly_wait(10)
     time.sleep(5)
    

    这一步模拟点击某个a标签连接

    hrefs=browser.find_element_by_partial_link_text(u"客户")
    hrefs.click()
    
     time.sleep(5)
    

    我们可以通过browser.page_source把当前页面的静态资源打印出来看看,然后根据自己需求进行提取有用的资源

    print(browser.page_source) 现在我们可以看到,我们已经把页面的静态资源加载到了browser里面,我们可以开始根据自己的需求从browser里面拿自己需要的资源了,我这里先简单介绍一下selenium的使用,有关其具体选择器和选择方法,如下所示:

    browser.find_element_by_id("id的name")
    browser.find_element("")
    browser.find_element_by_tag_name("标签name")
    browser.find_element_by_class_name("classname")
    browser.find_element_by_css_selector("css选择器,cssname")
    browser.find_element_by_partial_link_text("带有链接的文本,获取其跳转地址,后面跟click事件可以模拟跳转")
    
    
    browser.find_element_by_xpath("里面可以跟正则表达式,XPath一般在实际自动化测试项目中用到比较多,其定位元素十分方便")此处例举xpath用法:假如一个html是这个样子的:<html>
    <body>
     <form id="myform">
     <input name="name" type="text" />
      <input name="pwd" type="password" />
      <input name="continue" type="submit" value="Login" />
    </form>
    </body>
    <html>我们需要用xpath定位他的pwd:
    pwd =browser.find_element_by_xpath("//form[input/@name='pwd']")---获取form下input标签中name为pwd的资源
    pwd = browser.find_element_by_xpath("//form[@id='loginForm']/input[2]")---获取第二个input标签的资源
    pwd = browser.find_element_by_xpath("//input[@name='pwd']")---直接获取input为pwd的资源
    

    xpat语法与bs4

    xpth获取属性//a[@class="name"]/@img
          获取文本//a[@class="name"]/@img/text()
    
      bs4获取属性
       href = site.select('td a')[0].attrs['href']
      获取文本
       catalog = site.select('td')[1].get_text()
    

    相关文章

      网友评论

          本文标题:request模块中的方法

          本文链接:https://www.haomeiwen.com/subject/xzyblqtx.html