备份Python爬虫的笔记

%d:格式化整数类型
Beautiful Soup(bs4):多次筛选
    方法:
        prettify():以HTML格式输出

.string:获得标签内部的文字(只支持当前标签下和标签的标签)
.strings:获取多个字符串,不过需要遍历获取(无限制)
.stripped_strings:获取多个字符串,并去掉多余空白内容
.contents:将该节点(Tag)的全部内容以‘列表’的形式输出(支持索引的方式来获取元素)
.children:返回一个list迭代器,可遍历
.descendants:该属性可以对所有标签(Tag)的子孙节点进行递归循环,和.children属性有点相似(拥有一个剥离过程,有点像剥鸡蛋???)
name:返回该标签的名称 
attrs:返回该标签中的所有属性
del:删除(可以删除属性)
    例:del  对象.标签[‘属性’]
get(‘属性’):获得属性值
repr(string):就对象转换位共解释器读取的形式
.parent:返回该标签的父节点(父标签)
.parents:返回可以递归得到元素的所有父辈节点(所有父标签)
next_sibling:获取该节点的下一个兄弟节点(返回值是下一个节点,允许对象.tag.next_sibling.next_sibling,多层使用)
.prev_sibling:获取上一兄弟节点,如果节点不存在,则返回None
.next_siblings:获取该节点以下的兄弟节点 
.previous_siblings :获取该节点以上的所有兄弟节点,如果没有则返回None
.next_element:(过程)获取该节点的后面那个节点
.prev_element:(过程)获取该节点前面的节点
.next_elements:(过程)获取该节点后面的所有节点
.prev_elements:(过程)获取该节点前面的所有节点


Beautiful Soup的四大对象种类:
    Tag:HTML中的一个个标签(就是标签)  
        格式:BeautifulSoup对象.标签     返回值为Tag
        Tag对象支持字典形式,对象.标签[‘属性’]    返回的是属性值
        可以采用字典的形式进行属性修改。
            例:对象.标签[‘属性’]=属性值
        Tag对象的属性:(支持字典形式,对象.标签[‘属性’]    返回的是属性值)
            name:返回该标签的名称 
            attrs:返回该标签中的所有属性
            del:删除(可以删除属性)
                例:del  对象.标签[‘属性’]
        Tag的方法:
            get(‘属性’):获得属性值
    NavigableString:可以遍历的字符串(获得标签内部的文字)
        NavigableString的对象属性:
            .string:获得标签内部的文字(只支持当前标签下和标签的标签)
            .strings:获取多个字符串,不过需要遍历获取(无限制)
    BeautifulSoup:beautifulsoup对象表示的是一个文档的全部内容(可以当成特殊的Tag对象)
    Comment:Comment 对象是一个特殊类型的 NavigableString 对象(带有注释的文本,数据类型为Comment)
        与NavigableString 对象的区别就是Comment对象输出的内容带有注释符号

遍历文档树:
    直接子节点:
        .contents:将该节点(Tag)的全部内容以‘列表’的形式输出(支持索引的方式来获取元素)
        .children:返回一个list迭代器,可遍历
    所有子孙节点:

        .descendants:该属性可以对所有标签(Tag)的子孙节点进行递归循环,和.children属性有点相似(拥有一个剥离过程,有点像剥鸡蛋???)
    父节点:
        .parent:返回该标签的父节点(父标签)
        .parents:返回可以递归得到元素的所有父辈节点(上级标签)
    兄弟节点:(同级存在)
        .next_sibling:获取该节点的下一个兄弟节点(返回值是下一个节点,允许对象.tag.next_sibling.next_sibling,多层使用)
        .prev_sibling:获取上一兄弟节点,如果节点不存在,则返回None
        ( 注意:实际文档中的 tag 的 .next_sibling 和 .previous_sibling 属性通常是字符串或空白,因为空白或者换行也可以被视作一个节点,所以得到的结果可能是空白或者换行)
        .next_siblings:获取该节点以下的兄弟节点 
        .previous_siblings :获取该节点以上的所有兄弟节点,如果没有则返回None
    前后节点:(该节点位置的前后节点,按照过程,从上到下,从左到右的顺序)
        .next_element:(过程)获取该节点的后面那个节点
        .prev_element:(过程)获取该节点前面的节点
        .next_elements:(过程)获取该节点后面的所有节点
        .prev_elements:(过程)获取该节点前面的所有节点
    搜索文档树:
        find_all(name,arrts,recursive,text,**kwargs):筛选器,支持字符串,传入True,可以匹配到所有的tag(标签)
            **kwargs参数  支持参数为tag(标签)的属性来搜索,例如:对象.find_all(id=“link2”)
            注意:tag的class属性用“class_”来表示
            注意:有些tag属性在搜索find_all不能使用
            注意:attrs属性在搜索中以字典的格式使用,例“attrs={"data-foo": "value"}”
            text 参数接受 字符串,正则表达式,列表,True
            limit 参数:限制返回结果的数量
                格式: 对象.find_all("p",limit=2)  #返回结果为两条
        .select():注意:利用css格式来进行搜索
                貌似返回结果尅多个
                可以利用    标签[属性=??]    的格式来进行匹配(属性用中括号括起来)
                返回值是list,支持标签,只匹配一次    
                例:print soup.select('#link1')
                       print soup.select('.sister')
                       print soup.select('p #link1')
                       print soup.select("head > title")
                       print soup.select('a[class="sister"]')    
re:
    re.compile(”正则表达式“):将正则表达式字符串转换为一个对象,在进行find_all时python会将字符串转换为正则表达式对象,而经过compile方法转换之后。就不会发生重复转换的问题(使用正则表达式时需要用到,将正则表达式进行转换,有点像对正则表达式字符串的一种封装)
        

urllib库:(利用它模拟浏览器的请求发起过程)
    urllib.request.Request(“网址”):向服务器发送请求
    urllib.request.urlopen(“网址”,【timeout=数值】):打开链接
            timeout参数:超时时间,超过指定时长,跳过抓取
            date参数
            headers参数:仿造头部信息,来伪装浏览器,该参数是一个字典
        以上方法对象的方法
            read():读取
            read().decode(“utf-8”):以utf-8的格式读取
            status:返回请求成功的结果,成功返回200,失败返回404(响应的状态码)
            getheaders():返回响应的头信息(全部)
            getheader(‘参数’):返回头信息中的指定信息
    关于urllib异常:
        urllib.error
        urllib.error.HTTPErroe  异常:有code属性,代表错误信息
        urllib.error.URLError   异常:有reason属性,urlerr的属性
关于selenium库:
    from selenium import webdriver
    方法:
        webdriver.Chrome():返回一个浏览器对象
        浏览器对象.get(“网址”):利用浏览器对象自动打开浏览器
    定位元素的8种方法:
        定位一个元素              定位多个元素            含义
        find_element_by_id               find_elements_by_id     通过元素id定位
        find_element_by_name       find_elements_by_name     通过元素name定位
        find_element_by_xpath      find_elements_by_xpath     通过xpath表达式定位
        find_element_by_link_text  find_elements_by_link_tex 通过完整超链接定位
        find_element_by_partial_link_text      find_elements_by_partial_link_text    通过部分链接定位
        find_element_by_tag_name     find_elements_by_tag_name       通过标签定位
        find_element_by_class_name    find_elements_by_class_name     通过类名进行定位
        find_elements_by_css_selector       find_elements_by_css_selector    通过css选择器进行定位
    关于Selenium库中的Webdriver模块:
        浏览器控制方法:
        set_window_size()        设置浏览器的大小
        back()            控制浏览器后退
        forward()            控制浏览器前进
        refresh()            刷新当前页面
        clear()            清除文本
        send_keys (value)        模拟按健输入
        click()            单击元素
        submit()            用于提交表单
        get_attribute(name)        获取元素属性值
        is_displayed()        设置该元素是否用户可见
        size            返回元素的尺寸
        text            获取元素的文本
        鼠标方法:
        ActionChains(driver)        构造ActionChains对象
        context_click()        执行鼠标悬停操作
        move_to_element(above)    右击
        double_click()        双击
        drag_and_drop()        拖动
        move_to_element(above)    执行鼠标悬停操作
        context_click()        用于模拟鼠标右键操作,在调用时需要指定元素定位
        perform()            执行所有ActionChains 中存储的行为,可以理解成是对整个操作的提交动作
        多窗口切换:
        current_window_handle    获得当前窗口句柄
        window_handles        返回所有窗口的句柄到当前会话
        switch_to.window()        用于切换到相应的窗口,与上一节的switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。
关于pyquery库的使用:
    ##css选择器(和beautiful soup库功能相似)
    网页解析库
    构造方法:  初始化一个pyquery对象需要传入一个html文本
    构造方法可传入“字符串”,“url”(链接),“文件名”(filename),等等
    方法:
        find():支持find查找,
        children():只查找子节点,支持参数传递。例:参数为“.active"
        parent():查找某个节点的父节点
        parents():查找祖先节点,支持参数传递,参数为 .
        siblings():获取兄弟节点
    关于对pyquery对象的遍历:
        需要用到items()方法
        items():使用后返回一个可遍历的生成器(类型是puquery)
    节点(标签)方法:
        attr():获取属性,支持参数传入属性名称
        text():获取其内部的文本
        html():获取html文本
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值