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?
轉載于:https://www.cnblogs.com/autoria/p/5536603.html
總結
以上是生活随笔為你收集整理的requests/lxml的简单用例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MRC误码率的matlab仿真
- 下一篇: 宝峰对讲机16频率表_宝峰uv5r系列对