问题:我想爬个一个新浪旅游博客博主的文章(以前看过nodejs爬的,感觉文章好,而且页面布局比较适合练习爬虫)
然后准备解析标签的时候,发现find或者find_all找不到对应标签。甚至写成find('a'),find('p')都找不到标签 并且能find('head')却不能find('body')
然后我用
print soup.prettify()
找了一下 输出信息
博文_柳絮同学_新浪博客
我尝试把页面内容放在文件里,删掉了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:"
""