新手python爬虫入门教程问题求教

上次我们通过cookie登陆了 我的钢铁网。但是实际上这种方式并不是通用和安全的。这次我们来通过分析网站post的登录数据来登录现在各个大学都在用的正方教务系统。 目标分析:先来看一下我们都很讨厌的教务系统:从图中我们可以大概分析出我么需要填写的字段:用户名密码验证码身份选择需要注意的就是验证码:可以知道验证码是以图片的方式浮现在文本框上的,Python有很多图像识别的第三方库,但是准确率和使用上都比较麻烦。这里我选择找到验证码的图片链接,并下载到本地,通过用户手动输入验证码来完成登录验证码的抓取:仔细分析一下网页,我们可以直接找到验证码其实是一个图片:&img id="icode" src="CheckCode.aspx" onclick="reloadcode();" alt="看不清,换一张" title="看不清,换一张" alt="" border="0" style="POSITION:TOP:5LEFT:130px" /&
分析一下不难得出图片的连接:http://jw.****.edu.cn/(gxv2le55n4jswm45mkv14o2n)/CheckCode.aspx
通过这个连接我们可以知道教务系统是通过开发的Post数据的抓取:我们如何能知道每次我们提交登录按钮之后,我们都想服务器提交了哪些数据呢?这又要用到Chrome开发者工具了这里给一个技巧,我们可以先故意输入一个 错误的值来追踪一下我们究竟post了哪些值打开 Chrome开发者工具 --- Networks --- 勾选 Preserve log输入一些值,点击 登录按钮,在点开右边的 Headers 拉倒最后的 FromData:这里就是我们提交数据:这个字典里,我们很容易可以看到我们需要自己填写的值:post的数据一般是通过键值对的形式传到服务器的,一般是字典或json格式txtUserName: 用户名TextBox: 密码txtSecretCode: 验证码RadioButtonList1 :选择按钮 学生(这里需要我们手动编码成gbk编码)但是其他乱七八糟的又是什么?其中最奇怪的是第一个: ——VIEWSTATE这一长串随机的值,实际上是正方系统的一个简单的验证手段。我们在登录页面的原单代码里搜一下这串值:原来是input栏里的value,找到他的位置之后,我们就可以很简单的构造出我们需要post的字典了代码的书写:由于只是想分享一下登录的过程,爬虫的部分,我只是抓取了登录人的名字作为验证,代码也比较简陋,大家看个思路就成:import requests
import bs4
# 这是Python的一个非常有名的图片库,这里我们用它来显示验证码
from PIL import Image
def get_post_data(url):
# 首先获取到登录界面的html
html = requests.get(url
soup = bs4.BeautifulSoup(html.text, 'lxml')
# 找到form的验证参数
__VIEWSTATE = soup.find('input', attrs={'name': '__VIEWSTATE'})['value']
# 下载验证码图片
pic = requests.get(
'http://jw.****.edu.cn/(gxv2le55n4jswm45mkv14o2n)/CheckCode.aspx').content
with open('ver_pic.png', 'wb') as f:
f.write(pic)
# 打开验证码图片
image = Image.open('{}/ver_pic.png'.format(os.getcwd()))
image.show()
# 构造需要post的参数表
data = {'txtUserName': '',
'Textbox1': '',
'TextBox2': '',
'txtSecretCode': "",
'__VIEWSTATE': '',
# 这里我将radio栏--学生 encode成gbk编码,以符合数据的要求
'RadioButtonList1': '\xd1\xa7\xc9\xfa',
'Button1': '',
'lbLanguage': '',
'hidPdrs': '',
'hidsc': '', }
# 构造登录的post参数
data['__VIEWSTATE'] = __VIEWSTATE
data['txtSecretCode'] = input('请输入图片中的验证码')
data['txtUserName'] = input("请输入学号")
data['TextBox2'] = input("请输入密码")
return data
# 登录教务系统
def login(url,data):
# 通过requests库构造一个浏览器session,这能帮我们自动、持久的管理cookies,
s = requests.session()
s.post(url, data=data)
base_url = 'http://jw.****.edu.cn/(gxv2le55n4jswm45mkv14o2n)/default2.aspx'
data = get_post_data(base_url)
print(data)
# 模拟登录教务系统
brow = login(base_url,data)
test = brow.get(
'http://jw.****.edu.cn/(gxv2le55n4jswm45mkv14o2n)/xs_main.aspx?xh=')
# 测试看看是否能找到登陆后的信息
soup = bs4.BeautifulSoup(test.text, 'lxml')
name = soup.find('span', attrs={'id': 'xhxm'}).text
name = '登录失败 '
print(name)
结果:每个学校的教务系统多多少少都有点不一样的地方, 所以我就不给出具体的网址了每天的学习记录都会 同步更新到:微信公众号: findyourownway知乎专栏:blog : Github: 7834 条评论分享收藏文章被以下专栏收录拖动播放器想看猴子的私藏番剧30蕉即享所有私藏一整月该操作将消耗您30香蕉播放...弹幕...评论...收藏43手机观看更流畅扫描下载最新版客户端投蕉0喂捡破烂的梦想食&0&香蕉分享简介python爬虫入门展开详情关闭详情+&关注这个人很懒,什么都没有写!0投稿&/&0听众所属合辑:[title]订阅&[subscribeSize]取消订阅创建者:[username]稿件:[countSize]播放中[viewCount][danmuSize]相关主播展开全部主播[view]官方下载new友情链接反馈京ICP备号节目制作经营许可证(京)字第05158号0
还没有acfun账号,
请选择分组。您添加关注的用户将出现在对应的组中。添加关注把视频贴到博客或论坛视频地址复制flash地址复制html代码复制通用代码复制新手学习python爬虫小结 - 『编程语言区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 5462|回复: 39
新手学习python爬虫小结
阅读权限10
本板块禁止发布 “电子书资料” ,此类主题请发布至。
本板块禁止发布讨论和求助帖,此类主题请发布至。
本板块禁止发布 “视频教程” ,此类主题请发布至。
用python学习爬虫已经差不多两周了,感觉是时候做个阶段性的小结了。感觉吾爱论坛上,python3爬虫入门的帖子好少,那我就抛砖引玉一下,希望有高手不吝赐教。
我自己对某件事的兴趣时间一般都不长,所以我更喜欢在实战中学习python爬虫方面的相关知识,比如计算机网络方面,python编程方面。所以我第一件做的事,就是在网上搜索python3爬虫教程。https://jecvay.com/category/smtech/python3-webbug,我是跟着这位学的(不知道这样会不会侵犯他的著作权,害怕)。
首先,下载pycharm(一个python的IDE,免费版官网下载地址:https://www.jetbrains.com/pycharm/download/#section=windows&&,选择community版),之后就照着他的文章写代码。我爬的第一个网站就是百度。
打开pycharm,新建一个python文件,如第一张图。建好后,就可以写代码了。
import urllib.request
url='http://www.baidu.com'
data=urllib.request.urlopen(url).read()
data=data.decode('UTF-8')
print(data)
图三是截取的程序运行结果,想不到居然会报错。这个错误提示我data=urllib.request.urlopen(url)有错,有哪位能指导下的,还麻烦,告诉下怎么解决。
我觉得可能是网址有问题,于是我换成了www.zhihu.com不料,还是报错。如图4,它提示我decode有问题,于是我将它注释掉,再编译就成功了。真的搞不懂,为什么www.baidu.com这个网址会提示错误。真的好想知道怎么回事!!另外www.zhihu.com得到的显然不是网站的内容。如图5于是我又查阅了资料,http://cuiqingcai.com/947.html&&在这篇文章中找到了答案。原来urlopen有种方法是read,就是将返回获取到的网页内容,如果不用read直接print的话,输出的结果为:&[color=teal !important]addinfourl at[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]376[color=rgb(0, 111, 224) !important] [color=teal !important]whose [color=rgb(0, 45, 122) !important]fp[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]&[color=rgb(0, 45, 122) !important]socket[color=rgb(51, 51, 51) !important].[color=teal !important]_fileobject [color=rgb(128, 0, 128) !important]object[color=rgb(0, 111, 224) !important] at[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]0x7f[color=rgb(0, 111, 224) !important]&&,(我发现原来是我在换网址的时候,把urlopen()后面的read()方法给去掉了,导致了decode有问题,真是对自己无语了!)改掉后,我们就能把知乎网站给爬下来了。如图6所示。很难忘记爬成功时的心情,特别是在失败了那么多次以后。然而,对于百度这个,一直不甘心,为什么网上一样的代码,我怎么就爬不下来,于是在关闭fiddler4后,再试了下,发现可以爬了,如图7。我怀着疑惑,又开启fiddler4,又试了试,发现又报图3那样的错。网上暂时找不到答案,烦请高手解答下。今天就先写到这里吧。明天继续。
(138.69 KB, 下载次数: 0)
22:15 上传
图3,作为一个菜鸟,当然是搞不懂啦
(84.73 KB, 下载次数: 0)
22:48 上传
(75.35 KB, 下载次数: 0)
22:51 上传
图5,成功了,但结果有点怪
(80.76 KB, 下载次数: 0)
23:22 上传
(126.43 KB, 下载次数: 1)
23:16 上传
(53.24 KB, 下载次数: 0)
21:44 上传
图1,在untitled1,点击右键,出现New,停在New,选择出现的python file
组图打开中,请稍候......
吾爱币 +13
热心值 +13
谢谢@Thanks!
用心讨论,共获提升!
热心回复!
谢谢@Thanks!
用心讨论,共获提升!
用心讨论,共获提升!
用心讨论,共获提升!
用心讨论,共获提升!
热心回复!
楼主成功后能不能发个源代码?
热心回复!
鼓励转贴优秀软件安全工具和文档!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
排版有待提高& && && && && && &
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
代码没有错& &换个网站吧&&错误是504&&百度网站主动拒绝的,& &百度拒绝爬虫的&&想要成功 爬百度 再首先要模 ...
哦,明白了,那今天就用user-Agent,爬百度
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
第一次发帖,感觉排版好差,下次争取把排版弄的更好看。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
锁进& &格式自行检查
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
锁进& &格式自行检查
锁进?神马意思
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
锁进?神马意思
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
代码没有错& &换个网站吧&&错误是504&&百度网站主动拒绝的,& &百度拒绝爬虫的&&想要成功 爬百度 再首先要模拟请求头 就是 User-Agent
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
共同学习 爬虫 ,
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
还是用requests 省力多
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
继续努力 加油
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.65被浏览7,376分享邀请回答edu.hellobi.com/course/156
课程源码:
今日头条:
淘宝美食:
猫眼电影:20添加评论分享收藏感谢收起第三方登录:

我要回帖

更多关于 python爬虫教程 的文章

 

随机推荐