任务:利用Python爬虫的相关知识爬取学校信息门户并将数据存入数据库中
用到并且需要掌握的Python第三方库
import requests
from bs4 import BeautifulSoup
import re
import pymysql
import bs4
需要解决的关键问题:
1.利用requests进行模拟登录,并用session保持会话。
2.利用bs4库对登录后的页面进行解析,获取网页新闻的链接。
3.利用bs4库和re库如何对新闻页面进行解析,获取新闻的内容。
4.利用bs4库爬取新闻内容,并利用pymysql库保存到数据库中。
1.模拟登陆
我一开始时利用requests中的post方法向登录界面提交数据,自信满满,认为自己能够登录成功,就写出了以下幼稚的代码。
postUrl = url
postHeader = {
'User-Agent': User-Agent
}
data = {'username': account, 'password': password}
try:
r = requests.post(url=postUrl, data=data, headers=postHeader)
html = r.text
soup = BeautifulSoup(html, 'lxml')
print(soup.prettify())
except:
print('爬取失败')
结果没有显示爬取失败,我以为自己成功了 ,可等我把输出的内容一看,这不就是登录界面的源码?返回了登录界面?完全没有任何网页新闻的链接,我才意识到我失败了。让我郁闷了好久,
有一天我在CSDN上看到登录时可以在headers中加入cookies,于是我又去试了下学校的信息门户。
postUrl = url
postHeader = {
'User-Agent': User-Agent
'Cookie': 'route=c4b118a65a48d46153e675807ba40b24; JSESSIONID_ids2=0001o4YS2gmK_LGPzJczYckMjGH:-LH1ERP'
}
data = {'username': account, 'password': password}
try:
r = requests.post(url=postUrl, data=data, headers=postHeader)
html = r.text
soup = BeautifulSoup(html, 'lxml')
print(soup.prettify())
except:
print('爬取失败')
结果可想而知,还是登录界面的源码。又自闭了好几天,有一天看到一篇写session的文章,session是用来保持会话的啊,我这还没登上去的呢,算了,死马当作活马医,用session来post数据,看看能不能登上去,我又双叒叕把代码改了。
postUrl = url
postHeader = {
'User-Agent': User-Agent
}
session = requests.session()
postData = {'username': account, 'password': password}
r = session.post(postUrl, headers=postHeader, data=postData)
html = r.text
soup = BeautifulSoup(html, 'lxml')
print(soup.prettify())
我又双叒叕把代码改了之后又双叒叕失败了。我自闭了,某天晚上看了学长的博客后恍然大悟,我没有注意到每次的登录校验码都不一样,每一次登陆时的时候登录效验码都不一样,应当先用session登录失败一次,获取此时的登录效验码,然后再用登录效验码和正确用户名密码登录信息门户,这下登录的问题终于解决了。
# 获取登录时的效验码
soup = BeautifulSoup(session.post(postUrl, headers=postHeader).text, 'lxml')
lt = soup.find('input', {'name': 'lt'})['value']
dllt = soup.find('input', {'name': 'dllt'})['value']
execution = soup.find('inpu

本文介绍了使用Python爬虫抓取学校信息门户新闻的完整流程,包括模拟登录、获取新闻标题和链接、解析新闻内容以及将数据存储到MySQL数据库。在登录过程中遇到登录验证码变化的问题,最终通过session保持会话解决。通过bs4和re库解析网页,利用pymysql将数据保存到数据库。总结了在爬虫开发过程中解决问题的重要性。
最低0.47元/天 解锁文章
2324

被折叠的 条评论
为什么被折叠?



