Glidedsky第一关详细解答

第一关是算是入门级的操作了。唯一比较麻烦的是,你直接用requests获取url的响应数据是不行的,网站要求你登录。
这个时候我们一般有两种方法,一种是手动在Headers头部信息里添加Cookie,另一种是使用selenium自动化登录网页。

Cookie:自行去浏览器里的Headers里复制粘贴到*处。

import requests

url='http://www.glidedsky.com/level/web/crawler-basic-1'
headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
    'Cookie': '***'
}
html=requests.get(url,headers=headers).content.decode()

Selenium:先把Chrome浏览器的驱动拷贝到目录下,然后填写*处的账号密码。

from selenium import webdriver

bro=webdriver.Chrome(executable_path='../chromedriver.exe')

bro.get('http://www.glidedsky.com/level/web/crawler-basic-1')

find_username=bro.find_element_by_id('email')
find_password=bro.find_element_by_id('password')
find_login=bro.find_element_by_css_selector('.btn')

find_username.send_keys('***')
find_password.send_keys('***')
find_login.click()

html=bro.page_source

之后使用xpath定位到数字所在的数据:

from lxml import etree

tree=etree.HTML(html)
find_num=tree.xpath("//*[@id='app']/main/div[1]/div/div/div/div/text()")
find_nums="".join(find_num)

但是采集到的数据是携带空格的,所以我们使用正则表达式清洗一下:(只提取获取到数据的数字部分)

number_list=re.findall('\d+',find_nums)

这时候拿到的就是储存所有数字的列表,最后写一个循环就可以求和啦!

写这个不是为了让大家抄答案,希望大家一些细节想不明白的时候过来看看能解决问题,主要还是要自主思考。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值