zoukankan      html  css  js  c++  java
  • requests/lxml的简单用例

    bytearray([source [, encoding [, errors]]])

    bytearray([source [, encoding [, errors]]])返回一个byte数组。Bytearray类型是一个可变的序列,并且序列中的元素的取值范围为 [0 ,255]。

    参数source:

    如果source为整数,则返回一个长度为source的初始化数组;

    如果source为字符串,则按照指定的encoding将字符串转换为字节序列;

    如果source为可迭代类型,则元素必须为[0 ,255]中的整数;

    如果source为与buffer接口一致的对象,则此对象也可以被用于初始化bytearray。

    lxml库的使用

    比较详细 http://www.crifan.com/python_try_lxml_parse_html/

    简单来说selector = etree.HTML(html) 用来返回一个<Element html at 0x28b0620>,

    其由<Element head at 0x28c13f0>,<Element body at 0x28c1fa8>...等组成

    使用content = selector.xpath('//span[@class="ctt"]')来解析xml,

    xpath的使用

    xpath基本上是用一种类似目录树的方法来描述在XML文档中的路径。比如用“/”来作为上下层级间的分隔。第一个“/”表示文档的根节点(注意,不是指文档最外层的tag节点,而

    是指文档本身)。比如对于一个HTML文件来说,最外层的节点应该是"/html"。 定位某一个HTML标签,可以使用类似文件路径里的绝对路径,如page.xpath(u"/html/body

    /p"),它会找到body这个节点下所有的p标签;也可以使用类似文件路径里的相对路径,可以这样使用:page.xpath(u"//p"),它会找到整个html代码里的所有p标签。

    除此之外还可以使用[@class] 等条件来进一步筛选内容,缩小范围。

    提取内容时,可能会遇到嵌套标签的情况,可以使用xpath('string(.)')直接提取出所有字符串

    代码样例

    # -*-coding:utf8-*-
    __author__ = 'Liu_100'
    import requests
    from lxml import etree
    cookie = {'Cookie':'_T_WM=8a2006293dfe5dc8c4d35223168328e8; SUB=_2A256TE82DeRxGedH6VcZ-SrPyTiIHXVZz1F-rDV6PUNbuNBeLRP3kW1LHesKXdUoJYW0wFPmv0w89PMwWXf5_w..; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WF1xfN7lmTJsSVpAxdGfnZF5JpX5K2hUgL.Fo24eo-R1KB0eoB2dJLoIEXLxK-LB--LB.BLxK-LB--LB.BLxK-L12qL12zLxKBLB.2LB.2LxK-LBonL1K5t; SUHB=0rr6esvipUlF8C; ALF=1466944614; SSOLoginState=1464352614'}
    url = 'http://weibo.cn/u/1890493665'
    # html = requests.get(url).content
    # print html
    html = requests.get(url, cookies=cookie).content
    # html = requests.get(url, cookies=cookie).text
    # html = bytes(bytearray(html, encoding='utf-8'))
    selector = etree.HTML(html)
    content = selector.xpath('//span[@class="ctt"]')
    for each in content:
        text = each.xpath('string(.)')
        print text
  • 相关阅读:
    Chunky Monkey(算法)
    Confirm the Ending(算法)
    Return Largest Numbers in Arrays(算法)
    防止SQL注入总结
    mybatis中的#和$的区别 以及 防止sql注入
    拆分字符串为树形结构
    虚拟机类加载机制
    linux加载字体
    项目上线暴露出的问题
    浅析正则表达式-应用篇
  • 原文地址:https://www.cnblogs.com/autoria/p/5536603.html
Copyright © 2011-2022 走看看