天天看點

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

大家好,我是皮皮。

一、前言

前幾天在Python鑽石交流群【海南菜同學】問了一個​

​Python​

​網絡爬蟲的選擇器提取問題,下圖是截圖:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

代碼如下圖所示:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

代碼初步看上去好像沒啥問題,但是結果就是不對。

from lxml import etree
import requests
url= "http://www.xiaohua.com/duanzi/"

resp = requests.get(url)
html = etree.HTML(resp.text)

print('*---*'*20)

result = html.xpath("/html/body/div[@class='main']/div[@class='content']/div[@class='grid clearfix']/div[@class='content-left']/div[@class='one-cont'][*]/p[@class='fonts']")
print(type(result))
print(result)
print('*-*'*20)
b = 0
for i in result:
    b += 1
    print(i,len(result))
    print(b,etree.tostring(i).decode('utf-8'))
    if b > 1:
        break      

初步判斷是​

​xpath​

​寫得有問題。

二、實作過程

這個問題,讨論的很激烈,具體細節讨論就不放出來了,這裡【薄荷味的魚】給了一個修改代碼,如下所示:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

運作之後可以順利得到段子的文本:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

運作之後,可以得到想要的結果:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

後來粉絲就順利的解決了,如下圖所示:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

這個粉絲後來還做了筆記,一起分享出來共同學習下:

# yyds幹貨盤點 # 盤點一個Python網絡爬蟲Xpath選擇器使用問題

三、總結