我很困惑!!!任何人都可以告诉我问题在哪里???这段代码以前工作正常,但从昨天开始就没有回复!我没有对它做任何改变!有没有人有任何想法???
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()
答案 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)
它工作得很好:)