python爬网页---百度旅游
想爬取 百度旅游上用户旅游日记以这篇为例:
http://lvyou.baidu.com/notes/4a9bafc20606a7048b25831f
urlTra = "http://lvyou.baidu.com/notes/4a9bafc20606a7048b25831f"
urlobj = urllib2.urlopen(urlTra).read()
# print urlobj
soup = BeautifulSoup(urlobj)
section = soup.find('section',attrs={'id':'body'})
print section
网页结构如下:
问题:为什么检索不到section呢?返回结果为none 我这边是正常的# python a.py
[<section id="body" class="note_view_page note_page"> </section>]
# cat a.py
#!/usr/bin/env python
import urllib2
from BeautifulSoup import BeautifulSoup
url="http://lvyou.baidu.com/notes/4a9bafc20606a7048b25831f"
urlobj=urllib2.urlopen(url).read()
soup=BeautifulSoup(urlobj)
section=soup.findAll('section',attrs={'id':'body'})
print section
#
如果真的找不到,那么有2种可能:
1.你浏览器中看到的网页,和你用python代码抓取出来的网页的内容不同 -> 需要你自己打印出来你自己抓取出来的内容是什么,然后再去写对应的BeautifulSoup的规则去提取
2.部分的html的节点,可能期间包含对应的,BeautifulSoup所支持不好的script或其他特殊内容(比如注释等内容)而导致BeautifulSoup无法正常解析,而导致提取不到所需要的内容 -> 如果是这样的情况,那么一种办法是:手动去删除特殊的内容,估计就可以了。
恩恩这个问题解决了 我用qwebkit 解析网页 能得到动态js内容
然后直接用beautifulsoup定位到网页的div块(非section)中就可以了。。 回复 4# tina437213
qwebkit是什么?能介绍下么? 可以的,没有问题。
页:
[1]