为什么我抓到的页面无法用BS正确提取数据啊?

Hastuur 发布于 2015/06/23 12:01
阅读 280
收藏 0

我试图抓取一个人的知乎主页动态(代码如下),但采用这种方法抓取下来的页面里的</a></div>标签全部多了一个\,变成了<\/a><\/div>,并且用BS模块提取数据,输出也非常奇怪,多了许多标签,以及根本不是我想要的TAG里的文本内容,请问如何解决这个问题?    

# -*- coding:utf-8 –*-
import sys
import requests
from bs4 import BeautifulSoup
import  re


import requests

reload(sys)
sys.setdefaultencoding('utf8')
# ---------------------------------------


def test():
    '''设置headers'''
    headers = {
        'Connection': 'Keep-Alive',
        'Accept': 'text/html, application/xhtml+xml, */*',
        'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
        'Accept-Encoding': 'gzip, deflate',
        'Host': 'www.zhihu.com',
        'DNT': '1'
    }

    s = requests.Session()#自动保存cookie,不用管它
    '''登陆'''
    r = s.post('http://www.zhihu.com/login',
               data={'_xsrf': BeautifulSoup(s.get('http://www.zhihu.com/').content).find(type='hidden')['value'],
                     'email': 'email', 'password': 'password', 'rememberme': 'y'},
               headers=headers)



    mo = s.post('http://www.zhihu.com/people/a-mo-mo-68/activities',
                    data={'_xsrf': BeautifulSoup(s.get('http://www.zhihu.com/people/a-mo-mo-68').content).find_all(
                        type='hidden')[1]['value'],
                          'start':'1433863506'}
                    )
    x = mo.content.decode("unicode-escape")

    soup = BeautifulSoup(x)
    content = soup.find('a',attrs={'class':'question_link'})
    print content.get_text('\n','</p>')




加载中
0
万里谁能驯
万里谁能驯
试试 x.replace("\\", "")
Hastuur
Hastuur
回复 @朱李 : 我把代码全部贴上来了,能不能麻烦看一下是不是我之前的出问题了?
Hastuur
Hastuur
回复 @朱李 : 不知道,以前碰到过这样的问题,抓取的页面不能用replace。而且我试了,输出还是没变化。
万里谁能驯
万里谁能驯
回复 @Hastuur : 为什么不能?x不是字符串吗?
Hastuur
Hastuur
没用啊,而且我记得x不能用replace吧。。。。
0
万里谁能驯
万里谁能驯
在x = mo.content...下面加一行x = x.replace("\\", "")
Hastuur
Hastuur
啊啊,多谢,请问为什么要把//替换?
0
万里谁能驯
万里谁能驯
\是多余的,所以要去掉。字符串部分如果有不理解的可以查看python字符串和转义相关的文档。
Hastuur
Hastuur
不好意思,从昨天开始就一直在复习水力,就没上电脑。实在感谢,之前我也试过用这个方法,但忘记了replace要加\了。。。。。
返回顶部
顶部