講講python使用xpath中遇到[究竟是什麼

寫在前面

本人的全部文章只適合善於使用百度的人,由於全部基礎知識個個博客複製粘貼了無數遍,我這裏均不會詳細講述。html

在這裏我表示全部不經驗證的轉載都是耍流氓,把一篇篇錯誤的文章轉載的處處都是,不知道浪費了多少人的時間精力去反覆調試錯誤的代碼,尤爲是對初學者有極大的打擊性。python

你們在學習python爬蟲的過程當中,會發現一個問題,語法我看完了,說的也很詳細,我也認真看了,爬蟲仍是不會寫,或者沒有思路,因此個人全部文章都會從實例的角度來解析一些常見的問題和報錯。python爬蟲


Element是什麼

迴歸正題,你們暈頭轉腦的看完繁雜的語法以後,已經火燒眉毛寫點什麼東西了,而後部分同窗可能遇到了這個dom

<Element a at 0x39a9a80>
或者相似 Element a at 0x???????,這樣的一個值,而後你們帶着問題去搜,而後全是英文啊,什麼一大堆亂七八糟的啊,英文很差的同窗就崩潰了,在這裏,我會重點解析一下學習

某種意義上來講,當你打印變量的時候獲得的這個值,其實它是一個列表,而後列表中的每個值都是一個字典調試

如何使用理解請看半成品開車實例,證實了本人很是擅長把學習和樂趣結合起來而且切身解決平常需求,滑稽臉.jpgcode

from bs4 import BeautifulSoup
from lxml import etree
import requests

gjc='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)

實例解析

下面重點看看這個代碼,xml

print(links[index])
        print(type(links[index]))
        print(links[index].tag)#獲取<a>標籤名a
        print(links[index].attrib)#獲取<a>標籤的屬性href和class
        print(links[index].text)#獲取<a>標籤的文字部分

打印出來的是htm

<Element a at 0x3866a58>
<class 'lxml.etree._Element'>
a
{'href': 'magnet:?xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca', 'class': 'download'}
磁力連接

該節點的html代碼爲utf-8

<a href="magnet:xt=urn:btih:7502edea0dfe9c2774f95118db3208a108fe10ca" class="download">磁力連接</a>

看到這裏你們應該就很是獸血沸騰的瞭解了三個屬性的用法了。

總結

  • Element類型是'lxml.etree._Element',某種意義來講同時是一個列表
  • 列表的須要使用tag\attrib\text三個不一樣的屬性來獲取咱們須要的東西
  • 變量.tag獲取到的是標籤名是---字符串
  • 變量.attrib獲取到的是節點標籤a的屬性---字典
  • 變量.text獲取到的是標籤文本--字符串

歡迎收藏點贊,拒絕轉載,由於目前我也是自學向前摸索,這些都是我目前認知到的東西,確定有講的不許確的地方,不但願會誤導到他人

相關文章
相關標籤/搜索