获取新浪微博的内容是什么?怎么用爬虫来做?
优采云 发布时间: 2021-05-12 00:26获取新浪微博的内容是什么?怎么用爬虫来做?
最近,新浪微博上有一个项目,其中一个要成为新浪微博的爬虫。尽管我急忙阅读了《 Python学习手册》和《 Python核心编程》,但是当我实际从事该项目时,我仍然一无所知。因此,我在Internet上找到了很多信息。获取新浪微博内容的方法大致有两种,一种是使用纯爬网程序,另一种是使用新浪提供的API。
要使用该API,您需要先申请一个Sina开发帐户。这个过程有点复杂。最终目标是获得新浪的app_key和app_secret。通过指导用户进行授权,获取access_token,然后调用API。尽管新浪提供的API便于开发人员进行开发,但其局限性也很大。首先是必须授权用户。自从Sina界面升级以来,许多界面仅对授权用户有效,例如friends_timeline,user_timeline以及具有此类限制的许多其他界面。另外,access_token有一个所谓的有效期,对于开发人员来说是5年,而对于其他人,如果授权级别用于测试,则只有一天,通常是7天。有关详细信息,请参见官方网站介绍。换句话说,如果有效期到期,则重新授权很麻烦。除了这些,实际上,它还对接口访问的频率有限制。就我们的项目而言,由于要获取的微博信息与地理位置有关,因此使用API并不方便。尽管我花了很多时间研究API,但最终还是放弃了。
最后,由于以下想法文章为我提供了帮助,我决定使用抓取工具来做到这一点:
本文的作者文章使用JAVA语言,但他为我提供了一个很好的主意。他没有使用模拟登录,而是使用了代理IP,但是在最新的文章中,他还说,由于新浪网已经升级,因此代理IP无法再使用,只能使用模拟登录。因此,我要感谢文章的以下作者:
他帮助我解决了模拟登录的问题,主要是通过模拟登录来保存cookie,这将在以后介绍。
当然,实际过程中仍然存在许多问题,例如需要通过正则表达式解析html。作弊新浪微博的网页源代码的源代码中的文本以utf-8的形式出现,即以'\ u4f60 \ u7684'的形式出现,这在查看时非常麻烦,并且使人一次失去对自己情绪的控制。具体的分析方法将在下一篇文章中介绍,同时将给出源代码。
顺便说一下,我的编译环境:Linux,Python 2. 7版本。所有源代码都在此环境中经过测试。如果您使用其他系统或Python 3. X版本,请自行进行修改。 。
这是v1版本,以后可能会进行修改,或者制作图形界面。 。
不可避免的是第一批产品存在缺陷,欢迎提出意见。
文件不多,Main.py:主文件; Matcher.py:解析html; WeiboLogin.py,WeiboEncode.py,WeiboSearch.py:用于模拟登录;还有一个用于存储用户名和密码的用户列表文件,这是为了防止新浪的反爬虫功能,我将在稍后介绍(但并不完美)
主要功能(Main.py):
<p>#!/usr/bin/env python
#-*-coding:utf-8-*-
from WeiboLogin import WeiboLogin
import re
import urllib2
import Matcher
def main():
urlheader='http://s.weibo.com/weibo/'
para=raw_input('请输入搜索内容:\n')
page=1
userlists=open('userlists').readlines()
reg1=re.compile(r'\\u4f60\\u7684\\u884c\\u4e3a\\u6709\\u4e9b\\u5f02\\u5e38\\uff0c\\u8bf7\\u8f93\\u5165\\u9a8c\\u8bc1\\u7801\\uff1a') #你的行为有些异常,请输入验证码
reg2=re.compile(r'\\u62b1\\u6b49\\uff0c\\u672a\\u627e\\u5230')#抱歉,未找到搜索结果
for userlist in userlists:
username=userlist.split()[0]
password=userlist.split()[1]
weibologin=WeiboLogin(username,password)
if weibologin.Login()==True:
print '登录成功'
user=True #帐号可用
while page