亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5719 | 回復(fù): 7
打印 上一主題 下一主題

請(qǐng)教各位大俠一個(gè)關(guān)于beautifulsoup的奇怪的問(wèn)題 [復(fù)制鏈接]

求職 : 系統(tǒng)工程師等
論壇徽章:
5
技術(shù)圖書徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28雙子座
日期:2014-06-16 15:08:042015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-05-31 18:28 |只看該作者 |倒序?yàn)g覽
      1、我把一個(gè)網(wǎng)頁(yè)保存為html,然后用beautifulsoup去分析。
      結(jié)果發(fā)現(xiàn),通過(guò)封裝的函數(shù)buildSoupFromStr(content)調(diào)用會(huì)報(bào)錯(cuò),
      直接使用BeautifulSoup(content,fromEncoding="GBK")則不會(huì)。

      2、另外,請(qǐng)教各位大俠,如果抓取一個(gè)網(wǎng)頁(yè)的文本部分,除了正則、beautifulsoup、還有比較好的辦法嗎?
       感覺(jué)beautifulsoup也不太方便。

  
報(bào)錯(cuò)內(nèi)容如下:
  1. Traceback (most recent call last):
  2.   File "C:\Program Files\Python27\code\hanhan.py", line 29, in <module>
  3.     buildSoupFromStr(content)
  4.   File "C:\Program Files\Python27\code\hanhan.py", line 20, in buildSoupFromStr
  5.     soup = BeautifulSoup(content,fromEncoding)
  6.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1522, in __init__
  7.     BeautifulStoneSoup.__init__(self, *args, **kwargs)
  8.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1147, in __init__
  9.     self._feed(isHTML=isHTML)
  10.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1189, in _feed
  11.     SGMLParser.feed(self, markup)
  12.   File "C:\Program Files\Python27\lib\sgmllib.py", line 104, in feed
  13.     self.goahead(0)
  14.   File "C:\Program Files\Python27\lib\sgmllib.py", line 174, in goahead
  15.     k = self.parse_declaration(i)
  16.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1463, in parse_declaration
  17.     j = SGMLParser.parse_declaration(self, i)
  18.   File "C:\Program Files\Python27\lib\markupbase.py", line 109, in parse_declaration
  19.     self.handle_decl(data)
  20.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1448, in handle_decl
  21.     self._toStringSubclass(data, Declaration)
  22.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1379, in _toStringSubclass
  23.     self.endData()
  24.   File "build\bdist.win32\egg\BeautifulSoup.py", line 1251, in endData
  25.     (not self.parseOnlyThese.text or \
  26. AttributeError: 'str' object has no attribute 'text'
復(fù)制代碼
全部代碼如下:
  1. # -*- coding: cp936 -*-
  2. from sys import *
  3. from BeautifulSoup import *


  4. def getContent(filename):
  5.     try:
  6.         file_object = open(filename, 'r')
  7.     except IOError:  
  8.         print 'Can not find file'
  9.         return -1
  10.     try:
  11.         content = file_object.read( )
  12.     finally:
  13.         file_object.close( )
  14.     return content

  15. def buildSoupFromStr(content,fromEncoding="GBK"):
  16.     print type(content)
  17.     soup = BeautifulSoup(content,fromEncoding)
  18.     #return soup

  19.    
  20. if __name__ == '__main__':
  21.     content = getContent('han.html')
  22.     #print content
  23.     if -1 == content:
  24.         print 'error happen'
  25.     buildSoupFromStr(content)
  26.     #BeautifulSoup(content,fromEncoding="GBK")
  27.    

復(fù)制代碼

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [報(bào)告]
發(fā)表于 2014-05-31 19:31 |只看該作者
1.bs默認(rèn)是UTF-8,如果真實(shí)頁(yè)面是其它編碼(ASCII除外),就會(huì)報(bào)錯(cuò)。在參數(shù)設(shè)置事先知道的編碼方式。
2. bs支持多種API,比如CSS selector就比較方便,前提是要了解CSS selector的語(yǔ)法?傮w來(lái)看,HTML/XML結(jié)構(gòu)化文檔的解析工作都是比較繁瑣復(fù)雜,沒(méi)什么捷徑。

求職 : 系統(tǒng)工程師等
論壇徽章:
5
技術(shù)圖書徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28雙子座
日期:2014-06-16 15:08:042015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
3 [報(bào)告]
發(fā)表于 2014-05-31 20:33 |只看該作者
timespace 發(fā)表于 2014-05-31 19:31
1.bs默認(rèn)是UTF-8,如果真實(shí)頁(yè)面是其它編碼(ASCII除外),就會(huì)報(bào)錯(cuò)。在參數(shù)設(shè)置事先知道的編碼方式。
2. b ...


謝謝大俠!
關(guān)于1,我直接調(diào)用沒(méi)有報(bào)錯(cuò),但是我將參數(shù)傳遞進(jìn)去之后就報(bào)錯(cuò)了!不是很奇怪的事情嘛!
貌似跟編碼方式無(wú)關(guān)吧!

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
4 [報(bào)告]
發(fā)表于 2014-05-31 21:12 |只看該作者
回復(fù) 3# qxhgd
是說(shuō)調(diào)用方式啊,確實(shí)和編碼無(wú)關(guān)。知道怎么用positional參數(shù)和keyword參數(shù)嗎?改buildSoupFromStr:
  1. soup = BeautifulSoup(content,fromEncoding= fromEncoding)
復(fù)制代碼

求職 : 系統(tǒng)工程師等
論壇徽章:
5
技術(shù)圖書徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28雙子座
日期:2014-06-16 15:08:042015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
5 [報(bào)告]
發(fā)表于 2014-06-01 11:28 |只看該作者
回復(fù) 4# timespace

按照你的修改的確正常了,多謝了!

但是我做了個(gè)測(cè)試:

  1. def func2(a,b):
  2.     print 'a is ',a,',b is',b

  3. def func1(a,b=5):
  4.     func2(a,b)

  5. func1(3,4)
復(fù)制代碼
最終打印結(jié)果:
a is  3 ,b is 4


沒(méi)有報(bào)錯(cuò)呢!

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
6 [報(bào)告]
發(fā)表于 2014-06-01 11:48 |只看該作者
為什么要報(bào)錯(cuò)?bs的encoding需要keyword參數(shù),你傳了positional參數(shù),導(dǎo)致bs的內(nèi)部邏輯錯(cuò)誤,但不是語(yǔ)法錯(cuò)誤。

論壇徽章:
7
榮譽(yù)版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07獅子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10雙子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
7 [報(bào)告]
發(fā)表于 2014-06-04 11:23 |只看該作者
用lxml模塊,然后用xpath語(yǔ)法析出你要的數(shù)據(jù)。

求職 : 系統(tǒng)工程師等
論壇徽章:
5
技術(shù)圖書徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28雙子座
日期:2014-06-16 15:08:042015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
8 [報(bào)告]
發(fā)表于 2014-06-04 15:15 |只看該作者
回復(fù) 7# r2007

謝謝大神,有空試試!

   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP