哈喽!大家好!
分享一个专门用于检验你爬虫技术的网站,不会被请去喝茶的专用网站glidedsky
爬虫-基础第一关
废话不多说,自学Python两个月,第一次分享,过第一关着实废了不少功夫,以前学的不扎实,又翻了模拟登陆,去空格,计算数字等等重新学了一遍,最后才成功了,打算记录下来,虽然过程有点繁琐,但都是一步一个脚印踩出来的,虽然有便捷的方法,但我想用自己的方式拿下来,只有这样才更能理解爬取的整个过程是怎么回事,如若有不足之处还请多多指教!
完整代码如下:
import requests
from lxml import etree
import re
header = {
'user-agent': '你自己的UA,不知道的同学可以网上找怎么弄,很简单',
}
# 定义一个变量等下用来存放计算结果
result = 0
#创建session保持回话连接
s = requests.Session()
url = 'http://www.glidedsky.com/login'
#发送get请求获取登陆页面信息
res = s.get('http://www.glidedsky.com/login',headers=header).text
#使用re解析登陆页面,得到token值
token = re.findall('<input type="hidden" name="_token" value="(.*?)">',res)[0]
#将token和账号密码封装成字典
data = {
'_token': token,
'email': '你自己的登陆账号',
'password': '你自己的登陆密码',
}
# 发送post请求,携带data模拟登陆,并获取页面源代码
req = s.post(url=url,data=data).text
# 用xpath解析得到题目所在连接
html = etree.HTML(req)
text_url = html.xpath('//td[@class="col-8"]/a/@href')[0]
# 再次发送get请求获取题目所在页面信息
req_url = s.get(url=text_url,headers=header).text
# 再次解析获得题目详情页面连接,并拼接成完整链接
math_url = 'http://www.glidedsky.com'+re.findall('<a href="(.*?)" target="_blank"',req_url)[0]
# 再次发送get请求获取题目详细信息
text = s.get(url=math_url,headers=header).text
# 解析页面获取数字
tree = etree.HTML(text)
for text_data in tree.xpath('//div[@class="row"]/div/text()'):
#去掉字符串左右两侧空格
num = int(text_data.strip())
result += num
print(result)
如果帮助到了你,可以点赞,我是木子,我们一起学习交流,一起成长。