tina437213 发表于 2013-09-17 16:39

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

HH106 发表于 2013-09-17 17:39

我这边是正常的# 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
#

crifan 发表于 2013-09-18 09:26

如果真的找不到,那么有2种可能:
1.你浏览器中看到的网页,和你用python代码抓取出来的网页的内容不同 -> 需要你自己打印出来你自己抓取出来的内容是什么,然后再去写对应的BeautifulSoup的规则去提取
2.部分的html的节点,可能期间包含对应的,BeautifulSoup所支持不好的script或其他特殊内容(比如注释等内容)而导致BeautifulSoup无法正常解析,而导致提取不到所需要的内容 -> 如果是这样的情况,那么一种办法是:手动去删除特殊的内容,估计就可以了。

tina437213 发表于 2013-10-14 17:09

恩恩这个问题解决了   我用qwebkit 解析网页 能得到动态js内容   
然后直接用beautifulsoup定位到网页的div块(非section)中就可以了。。

laike9m 发表于 2013-10-14 18:50

回复 4# tina437213


    qwebkit是什么?能介绍下么?

blackold 发表于 2013-10-14 23:55

可以的,没有问题。
页: [1]
查看完整版本: python爬网页---百度旅游