标签:value exe nlp comm headers ted nic 标签页 定义
url=‘https://m.weibo.cn/api/comments/show?id=‘+weibo_id+‘&page={}‘
,如果希望爬取某条微博下的评论,将weibo_id替换为该微博id即可。 i=0 # 评论的页数
comment_num=1 # 爬取的评论总数量
while True:
try:
req=requests.get(url=url.format(i),headers=headers)
comment_page=req.json()[‘data‘]
if req.status_code==200:
print(‘读取%s页的评论:‘%i)
for j in range(0,len(comment_page)):
print(‘第%s条评论‘%comment_num)
user=comment_page[j]
comment_id=user[‘user‘][‘id‘]#评论id
print(comment_id)
user_name=user[‘user‘][‘screen_name‘]#发表评论的用户名
print(user_name)
create_at=user[‘created_at‘]#发表时间
print(create_at)
# 去除评论中表情等的特殊字符
text=re.sub(‘<.*?>|回复<.*?>:|[\U00010000-\U0010ffff]|[\uD800-\uDBFF][\uDC00-\uDFFF]‘,‘‘,user[‘text‘])
print(text)
likenum=user[‘like_counts‘]#点赞数
print(likenum)
source=re.sub(‘[\U00010000-\U0010ffff]|[\uD800-\uDBFF][\uDC00-\uDFFF]‘,‘‘,user[‘source‘])#去除评论中表情等的特殊字符
print(source+‘\r\n‘)
comment_num+=1
i+=1
time.sleep(3)#防止反爬虫机制,停止一会~~~~
else:
break
except:
i+=1
pass
现在我们已经获取到了微博的评论,我们就把他们用Mysql存储起来,以待后面的使用。我们使用pymysql这个包来操作Mysql,一个简单的操作代码如下:
class Sql(object):
def __init__(self):
pass
def connect_sql(self):
self.conn=pymysql.connect(host=‘127.0.0.1‘,user=‘root‘,password=‘1111‘,charset=‘utf8‘,use_unicode=False)
self.cur=self.conn.cursor()
def insert_data(self,comment_id,user_name,create_at,text,likenum,source):
#数据库名为nlp,表名为luhan
sql=‘insert into nlp.luhan(comment_id,user_name,created_at,text,likenum,source) values(%s,%s,%s,%s,%s,%s)‘
param=(comment_id,user_name,create_at,text,likenum,source)
try:
self.cur.execute(sql,param)
self.conn.commit()
except Exception as e:
print(e)
self.conn.rollback()
这个类定义了一个insert_data函数,连接Mysql后,将上面的comment_id,user_name,create_at,text,likenum,source传入函数即可存入Mysql。
至此,就可以把某条微博的评论获取到本地了。
标签:value exe nlp comm headers ted nic 标签页 定义
原文地址:https://www.cnblogs.com/mengnan/p/9307655.html