urllib2在python中没有返回任何内容

时间:2014-05-16 12:50:46

标签: python parsing urllib2

我很困惑!!!任何人都可以告诉我问题在哪里???这段代码以前工作正常,但从昨天开始就没有回复!我没有对它做任何改变!有没有人有任何想法???

import re
from re import sub
import time
import cookielib
from cookielib import CookieJar
import urllib2
from urllib2 import urlopen
import difflib
import requests


def twitParser():

        try:
            cj = CookieJar()            
            opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
            res=opener.open('https://twitter.com/haberturk')
            html=res.read()

            splitSource=re.findall(r'<p class="js-tweet-text tweet-text">(.*?)</p>',html)
            print len(splitSource)

            for item in splitSource:
                aTweet = re.sub(r'<.*?>','',item)
                print aTweet

            except Exception, e:
                print str(e)
                print 'ERROR IN MAIN TRY'



    twitParser()

2 个答案:

答案 0 :(得分:0)

如果你的代码没有改变,那么可能还有别的东西:

此标记不再存在:

<p class="js-tweet-text tweet-text">

取而代之的是:

ProfileTweet-text js-tweet-text u-dir

虽然可以使用regexp获得你想要的东西,但是不要使用它,而是使用xml解析器:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
ptags = soup.find_all("p")
texts = [p.text for p in ptags if "js-tweet-text" in p["class"]]

可以合理地拆分该功能,首先确保你获得html,然后如果找到p标签,那么如果你发现任何符合你标准的话。

正如Wooble所说,使用twitter api,这些公司提供它,所以你不必刮掉并花费他们的资源。

答案 1 :(得分:0)

感谢所有回答我的恶魔:)我改变了这一行:

    splitSource=re.findall(r'<p class="js-tweet-text tweet-text">(.*?)</p>',html)

    splitSource=re.findall(r'dir="ltr">(.*?)</p>',sourceCode)

它工作得很好:)