1. 程式人生 > >爬蟲提取標籤的幾種方式

爬蟲提取標籤的幾種方式

我最喜歡用兩種解析方式

#第一種解析方式  etree+xpath  提取匹配標籤
a = "<div class='a'>123<p>1455555</p></div>"

from lxml import etree
con = etree.HTML(a)
print(con)
print(con.xpath("//div/text()"))
print(con.xpath("//div/p/text()"))
print(con.xpath("//div//text()"))

# 輸出結果:
['123']
['1455555']
['123', '1455555'] 


# 第二種提取標籤的方式  Selector +css 提取

from scrapy import Selector
a = "<div class='a'>123<p>1455555</p></div>"
con = Selector(text=a)
print(con)
print(con.xpath("//div/text()").extract())
print(con.xpath("//div/p/text()").extract())
print(con.xpath("//div//text()").extract())

# 輸出結果:
<Selector xpath=None data='<html><body><div class="a">123<p>1455555'>
['123']
['1455555']
['123', '1455555']



# string(.)的用法
b = con.xpath("//div")
# 獲取標籤下面的所有的字元
print(b.xpath("string(.)"))  

# 輸出結果:
[<Selector xpath='string(.)' data='1231455555'>]

當然還有其他的提取方式,比如說re,css, bs4, pyputer 等等等等, 個人對xpath比較熟悉,所以一般情況下我會使用xpath,有的欄位麻煩的,會對提取的結果用一個正則表示式來獲取想要的文字。

requests請求的特殊幾種獲取方式處理

# requests預設使用application/x-www-form-urlencoded對POST資料編碼。如果要傳遞JSON資料,可以直接傳入json引數:
url = "https://123456.com"
params = {'key': 'value'}
r = requests.post(url, json=params)  # 內部自動序列化為JSON

# 要在請求中傳入Cookie,只需準備一個dict傳入cookies引數:
cs = {'token': '12345', 'status': 'working'}
r2 = requests.get(url, cookies=cs)