讲讲python使用xpath中遇到[Element a at 0x39a9a80到底是什么
寫在前面
本人的所有文章只適合善于使用百度的人,因為所有基礎知識個個博客復制粘貼了無數遍,我這里均不會詳細講述。
在這里我表示所有不經驗證的轉載都是耍流氓,把一篇篇錯誤的文章轉載的到處都是,不知道浪費了多少人的時間精力去反復調試錯誤的代碼,尤其是對初學者有極大的打擊性。
大家在學習python爬蟲的過程中,會發現一個問題,語法我看完了,說的也很詳細,我也認真看了,爬蟲還是不會寫,或者沒有思路,所以我的所有文章都會從實例的角度來解析一些常見的問題和報錯。
Element是什么
回歸正題,大家暈頭轉腦的看完繁雜的語法之后,已經迫不及待寫點什么東西了,然后部分同學可能遇到了這個
<Element a at 0x39a9a80>
或者類似 Element a at 0x???????,這樣的一個值,然后大家帶著問題去搜,然后全是英文啊,什么一大堆亂七八糟的啊,英文不好的同學就崩潰了,在這里,我會重點解析一下
某種意義上來說,當你打印變量的時候得到的這個值,其實它是一個列表,然后列表中的每一個值都是一個字典
如何使用理解請看半成品開車實例,證明了本人非常擅長把學習和樂趣結合起來并且切身解決日常需求,滑稽臉.jpg
from bs4 import BeautifulSoup from lxml import etree import requestsgjc='SHKD-700' #定義URL html = "http://www.btanv.com/search/"+gjc+"-hot-desc-1" #解碼URL html = requests.get(html).content.decode('utf-8') #解析成xml dom_tree = etree.HTML(html) #在xml中定位節點,返回的是一個列表 links = dom_tree.xpath("//a[@class='download']") for index in range(len(links)):# links[index]返回的是一個字典if (index % 2) == 0:print(links[index].tag)print(links[index].attrib)print(links[index].text)實例解析
下面重點看看這個代碼,
print(links[index])print(type(links[index]))print(links[index].tag)#獲取<a>標簽名aprint(links[index].attrib)#獲取<a>標簽的屬性href和classprint(links[index].text)#獲取<a>標簽的文字部分打印出來的是
<Element a at 0x3866a58> <class 'lxml.etree._Element'> a {'href': 'magnet:?xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca', 'class': 'download'} 磁力鏈接該節點的html代碼為
<a href="magnet:xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca" class="download">磁力鏈接</a>看到這里大家應該就非常獸血沸騰的了解了三個屬性的用法了。
總結
- Element類型是'lxml.etree._Element',某種意義來說同時是一個列表
- 列表的需要使用tag\attrib\text三個不同的屬性來獲取我們需要的東西
- 變量.tag獲取到的是標簽名是---字符串
- 變量.attrib獲取到的是節點標簽a的屬性---字典
- 變量.text獲取到的是標簽文本--字符串
歡迎收藏點贊,拒絕轉載,因為目前我也是自學向前摸索,這些都是我目前認知到的東西,肯定有講的不準確的地方,不希望會誤導到他人
總結
以上是生活随笔為你收集整理的讲讲python使用xpath中遇到[Element a at 0x39a9a80到底是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud构建微服务
- 下一篇: 【328天】每日项目总结系列066(20