爬取需要登录的网站数据

爬去某大学某学生的课程表
先查看该网站的request方法和数据表单
request方法是get
这里写图片描述
表单头为u和p
这里写图片描述

import urllib.request
import http.cookiejar
import urllib.parse
from urllib.request import urlopen

url="https://gsdb.bjtu.edu.cn/client/login/"
agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/60.0.3112.113 Chrome/60.0.3112.113 Safari/537.36'

cookie=http.cookiejar.CookieJar()
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

headers = {'User-Agent':agent}
postdata=urllib.parse.urlencode({'u':'XXXXXX','p':'××××××'})
postdata=postdata.encode('UTF-8')

request=urllib.request.Request(url,postdata,headers)
result=opener.open(request)
print(result.read().decode('UTF-8'))

登录成功~
这里写图片描述

登录后就可以访问用户的各个网页了。

result=opener.open('https://gsdb.bjtu.edu.cn/course_selection/select/schedule/')
print(result.read().decode('utf-8'))

爬取课程表

pattern=re.compile('<tr>(.*?)</tr>',re.S)
items=re.findall(pattern,pagecode)
for item in items:
	pat=re.compile('<td>(.*?)</td>',re.S)
	its=re.findall(pat,item)
	for it in its:
		print(it)

运行成功!

分布运行
cookie.py 把登录网站的cookie信息保存到cookie.txt里。

import urllib.request
import re
import http.cookiejar
import urllib.parse

filename='cookie.txt'
#cookie=http.cookiejar.CookieJar(filename)
cookie=http.cookiejar.MozillaCookieJar(filename)
url="https://gsdb.bjtu.edu.cn/client/login/"
agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/60.0.3112.113 Chrome/60.0.3112.113 Safari/537.36'

opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
headers = {'User-Agent':agent}
postdata=urllib.parse.urlencode({'u':'xxxxxx','p':'xxxxxx'})
postdata=postdata.encode('UTF-8')

request=urllib.request.Request(url,postdata,headers)
result=opener.open(request)
print(result.read().decode('utf-8'))
cookie.save(ignore_discard=True,ignore_expires=True)

spider.py加载cookie.py模块,从cookie.txt里面加载出cookie信息,这样就可以模拟登录。

import urllib.request
import re
import http.cookiejar
import cookie

cookie=cookie=http.cookiejar.MozillaCookieJar()
cookie.load('cookie.txt',ignore_discard=True,ignore_expires=True)
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
result=opener.open('https://gsdb.bjtu.edu.cn/course_selection/select/schedule/')
# print(result.read().decode('UTF-8'))
pagecode=result.read().decode('utf-8')
pattern=re.compile('<tr>(.*?)</tr>',re.S)
items=re.findall(pattern,pagecode)
for item in items:
	pat=re.compile('<td>(.*?)</td>',re.S)
	its=re.findall(pat,item)
	for it in its:
		print(it)
运行成功!

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值