Python爬虫——新浪微博登陆
一、前期准备: 编译环境:Python 3.4 Python库:requests、re、urllib、BeautifulSoup 二、实现分析: 尝试爬虫登陆网站时,会涉及到很多Javascript、验证码、cookies等很多的问题,为了避免太麻烦的登陆方式,我建议大家访问对应网站的移动版。比如访问新浪微博的移动版: weibo ,登陆网址为 login.weibo/login/,
一、前期准备:
编译环境:Python 3.4
Python库:requests、re、urllib、BeautifulSoup
二、实现分析:
尝试爬虫登陆网站时,会涉及到很多Javascript、验证码、cookies等很多的问题,为了避免太麻烦的登陆方式,我建议大家访问对应网站的移动版。比如访问新浪微博的移动版: weibo ,登陆网址为
login.weibo/login/,登陆界面为:
登陆界面比较简单,不涉及验证码和Javascript处理的问题。
分析网页源码,登陆主要需要填写一个表格的数据,表单数据名分别为: 'tryCount'、'submit'、'vk'、'password_7659'、'backURL'、'remember'、'mobile'、'backTitle',这其中'password_7659'和'mobile'需要自己填写对应的密码和账户名,其余的直接提取原网页的数据即可。
这里,新浪对输入元素名做了处理,每次访问得到的password元素名都不相同,连接了一个四位的随机数字,所以提取password时需要用正则匹配出来。
登陆后需要保存cookie,我这里使用的request库的session模块,可以维持一个长时间的登陆状态。
三、源码
此源码实践时,请填入自己的账号密码。
#!/usr/bin/python3import requestsfrom bs4 import BeautifulSoupfrom urllib.request import urlopenimport re #头信息,可以伪装为浏览器访问myHeaders={}myHeaders["User-Agent"]="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101Firefox/42.0"myHeaders["Accept"]="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"#登陆网址login_url="login.weibo/login/"print("====> The login_url: "+ login_url)print("====> Visit login_url...")login_reponse=requests.get(login_url,headers=myHeaders)#转化为BeautifulSoup对象bsObj=BeautifulSoup(login_reponse.text,"lxml")#提取出表单中的post网址action_url=bsObj.find("form").attrs["action"]action_url=login_url + action_urlprint("====> The action_url: "+ action_url)print("====> Visit action_url...")#提取表单中的元素散列submit_dict={}input_values=bsObj.find("form").findAll("input")for in_value in input_values: #name值作为主键,value作为值 if"name" in in_value.attrs: if"value" in in_value.attrs: submit_dict[in_value.attrs["name"]]=in_value.attrs["value"] else: submit_dict[in_value.attrs["name"]]="" #对于随机的password元素名,需要用正则提取 ifre.match(r"password.*",in_value.attrs["name"]): #这里填入自己的密码 submit_dict[in_value.attrs["name"]]="************" ifin_value.attrs["name"]=="remember": submit_dict[in_value.attrs["name"]]="on" ifin_value.attrs["name"]=="mobile": #这里填入自己的账号 submit_dict[in_value.attrs["name"]]="*************"session=requests.Session()s=session.post(action_url,params=submit_dict,headers=myHeaders)print("Login Success")#输出登陆成功后微博主页的内容print(s.text) #我们这里尝试发一条微博s=session.get("weibo/")submit_url=BeautifulSoup(s.text,"lxml").find("form",action=repile("/mblog/sendmblog\?st=.*")).attrs["action"]weibo_content={"rl":"0"}weibo_content["content"]="微博测试~"s=session.post("weibo/"+submit_url,params=weibo_content,headers=myHeaders)

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)