[爬蟲]python下的xpath清洗數據之html數據清洗
目錄
源起
分析
總結
源起
現在我們面對一些爬蟲數據,特別是對于web網頁的爬取的時候,網頁總有一些不規整的數據來導致拿數據的麻煩,比如如下這種
111
222
333
444
555
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
111
222
333
444
eeeeeeeeeeee
555
aabbccddd
我只想拿到111,222,333,444,555這些有效的信息,因為有些p標簽里面會引入script元素,導致我們還要在后期清洗,比較麻煩
分析
首先拿到問題我們就可以本能的想至少兩種方式,如果當成是文本處理,使用排除掉script這些文本,另外我們可以直接移除掉這些script元素,這里我不推薦使用正則,畢竟我們拿到一個特定的環境,比如lxml 庫就可以很輕松的處理這些文檔,使用正則后期維護困難,另外,你過兩個星期之后你也不會知道你當時寫的正則是什么意思
還是直接上代碼吧
# -*- coding: utf-8 -*- from lxml import html from lxml.html.clean import Cleaner html_str = """
111111
222222
333333
44444
665666
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# -*- coding: utf-8 -*-
from lxml import html
from lxml.html.clean import Cleaner
html_str = """
111111
222222
333333
44444
eeeeeeeeeeee
665666
aabbccddd
"""
def clean_script():
cleaner = Cleaner()
cleaner.javascript = True??# This is True because we want to activate the javascript filter
cleaner.style = True # clean the style element
tree = html.fromstring(html_str)
print html.tostring(cleaner.clean_html(tree))
def remove_node():
tree = html.fromstring(html_str)
ele = tree.xpath('//script')
for e in ele:
e.getparent().remove(e)
print html.tostring(tree)
if __name__ == '__main__':
remove_node()
輸出結果
111111
222222
333333
44444
665666
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
111111
222222
333333
44444
665666
總結
本次主要介紹了常見的html 數據清洗方法,介紹了lxml 一些常用操作和方法,希望對于大家清洗數據的時候有幫助
HTML Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。