使用tidylib解決不規則網頁問題

2022-06-19 21:42:14 字數 2239 閱讀 7493

windows 下安裝tidylib

先去跑官方提供的測試用例報錯

ition 0: unexpected end of data

traceback (most recent call last):

file

"_ctypes/callbacks.c

", line 314, in

'calling callback function

'file

"d:\python27\lib\site-packages\tidylib\sink.py

", line 79, in

put_byte

write_func(byte.decode(

'utf-8'))

file

"d:\python27\lib\encodings\utf_8.py

", line 16, in

decode

return

codecs.utf_8_decode(input, errors, true)

unicodedecodeerror:

'utf8

' codec can'

t decode byte 0xb7 in position 0: invalid start byte

解決辦法:

將dll解壓到python安裝目錄下的scripts資料夾即可

在資料採集時,處理不規範的html頁面是件令人頭疼的事。因為不規範的html頁面往往會引起xpath解析失敗,造成得不到正確的資料。 

這裡引入tidylib,例項採用抓取慧聰網為例子,使用示例如下,

from tidylib import

tidy_document

import

requests

from lxml import

etree

url = "

"s =requests.session()

#proxies=

headers =

response = s.get(url, headers=headers).text

response, errors =tidy_document(response)

res =etree.html(response)

items = res.xpath('

//div/ul/li[contains(@class,"grid-list")]')

print

(response)

print

(len(items))

for item in

items:

d =dict()

d['name

'] = item.xpath('

.//div[2]/dl/dd/p/a/text()')

d['title

'] = item.xpath('

.//div[@class="newitem"]/div/a/@title')

d['price

'] = item.xpath('

.//div[2]/dl/dt/span/text()')

d['bcid

'] = item.xpath('

.//div[@class="newitem"]/@data-bcid')

d['username

'] =item.xpath('

.//div[@class="newitem"]/@data-username')

d['tel

'] =item.xpath('

./@data-telphone')

d['businid

'] =item.xpath('

./@data-businid')

d['sellerproviderid

'] =item.xpath('

./@data-sellerproviderid')

d['supcatid

'] =item.xpath('

./@data-supcatid')

d['main_product

'] =item.xpath('

.//div[@class="newitem"]/@data-obj')

print(d)

可以匹配導資料

......

解決OSPF的不規則區域

要求 隧道解決 位址規劃 r1 192.168.1.0 24 環迴 1.1.1.1 r2 192.168.2.0 24 環迴 2.2.2.2 r3 192.168.3.0 24 3.3.3.3 r4 192.168.4.0 24 4.4.4.4 r5 5.5.5.5 1在r1上配置位址 syssys...

一 解決OSPF不規則區域問題及例題

決ospf不規則區域問題 1 遠離骨幹的非骨幹區域 2 不連續骨幹區域 解決方法 tunnel 在兩台abr上建立tunnel,然後將其宣告到ospf協議中 缺點 1 選路不佳 2 週期hello和更新均對中間區域進行影響 思科inte ce tunnel 0 tunnel protocol gre...

使用table2excel匯出不規則table

專案需要匯出不規則資料,根據他的js改完後,發現table的列並未對齊,所以想了一下,一般合併單元格有兩種,一種是自身合併,一種是依據其他列合併,這兩種結合使用才能讓 完美呈現,貼下 乙個是根據自身,乙個是根據前列 function mergecells data,fieldname,colspan...