关于beautifulsoup的一个bug 由于无法正常解析标签)

问题:我想爬个一个新浪旅游博客博主的文章(以前看过nodejs爬的,感觉文章好,而且页面布局比较适合练习爬虫)


然后准备解析标签的时候,发现find或者find_all找不到对应标签。甚至写成find('a'),find('p')都找不到标签  并且能find('head')却不能find('body')

然后我用

print soup.prettify()
找了一下 输出信息


 
  
  
   博文_柳絮同学_新浪博客
  
  
  
  
   
   
   
  
 

确实是只能find(‘head') 标签 ,但是head里面的东西比如style标签就爬不了

我尝试把页面内容放在文件里,删掉了head所有内容,发现可以正常用soup解析页面了

是head导致的吗,但是查阅网上并没有说什么body无法正常用bs匹配的信息

果然,我只留一个空head标签,仍然可以正常解析

那么,肯定是head里面的内容所导致的。

通过排除删查



博文_柳絮同学_新浪博客

















在第一个script标签外层 有个 <![if lte IE 6>所导致的 ,这是一个鉴别浏览器的前端页面写法

在网上查询,beautifulsoup 3.0.6以下无法解析,包含这段以及类似的鉴别代码,都会是bs解析产生bug。

需要通过正则消除即可。

https://stackoverflow.com/questions/132488/regex-to-remove-conditional-comments

给出的几个正则匹配,或是自己写一个。


"))*"
"?s:"
 ""

你可能感兴趣的:(python)