python实例-通过cookie实现登录csdn获取自己微博的文章列表

在使用python做爬虫的时候,大部分情况都会遇到登录问题,这就涉及到python的cookie的用法。这里参照网上的一些资料实现了获取csdn自己微博的列表
功能目标:获取csdn我的微博入口,查看个人的微博列表
思路:1、首先分析csdn登录需要哪些参数
   2、根据需要的参数生产data进行登录,保存cookie信息
   3、分析我的微博的路径进行后续访问,通过BeautifulSoup筛选需要的文章列表

查看csdn登录的from表单


password 和username 自己填写,lt和execution分析需要动态获取,_eventId这个是固定字符串

所以先要请求获取动态lt和execution

#coding:utf-8
import urllib.parse, urllib.request, http.cookiejar, re
from bs4 import BeautifulSoup

def text_create(name, msg):#保存文件,传入文件名与内容
    desktop_path = '/Users/wuhao/Desktop/python/'    
    full_path = desktop_path + name + '.txt' 
    file = open(full_path,'w')             
    file.write(msg) 
    file.close() 
    print('Done :',name)

cookie=http.cookiejar.CookieJar()
cookieProc =urllib.request.HTTPCookieProcessor(cookie)
opener =urllib.request.build_opener(cookieProc)
h=opener.open('https://passport.csdn.net/account/login').read().decode("utf-8")
patten1 = re.compile(r'name="lt" value="(.*?)"')  
patten2 = re.compile(r'name="execution" value="(.*?)"')
#获取csdn登录需要的前置参数 it\execution
lt=patten1.search(h).group(1)
execution=patten2.search(h).group(1)

postData = { 
			'username':'150***@163.com',
			'password':'***',
			'lt':lt,
			'execution':execution,
			'_eventId':'submit'
		}
postData= urllib.parse.urlencode(postData).encode(encoding='UTF8')
opener.addheaders = [('Origin', 'https://passport.csdn.net'),  
		('User-Agent',  
		'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'),  
		('Referer', 'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn')  
		]  
response = opener.open('https://passport.csdn.net', data=postData)
text = response.read().decode("UTF8")
text_create('csdn_login.html',text)

response2 = opener.open('http://blog.csdn.net') #获取我的CSDN主页
text2 = response2.read().decode('utf-8', 'ignore')
text_create('csdn_mycsdn.html',text2)

response3 = opener.open('http://write.blog.csdn.net').read().decode("utf-8") #获取我的微博主页
patten3 = re.compile(r'var redirect = "(.*?)"') 
blogurl = patten3.search(response3).group(1)
response = opener.open(blogurl)
text4 = response.read().decode("utf-8")
text_create('blog_list.html',text4)
soup = BeautifulSoup(text4, 'html.parser')
#data=soup.select("tr td a[target=\"_blank\"]")
data=soup.select("tr td[class=\"tdleft\"] a")#获取a链接target=_blank的微博列表
print(len(data))
for html_tag in data:
	print("title :  "+html_tag.string)

成功登录之后查看我的博客链接 write.blog.csdn.net

访问之后发现内容不对


原来onload重定向了,所以还要动态获取redirect 作为新的url链接

之后就通过select标签的形式筛选出我需要的博客列表


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值