selenium+requests解决glidedsky第二题

分析思路

目标网站: glidedsky第二题

第一步
爬虫首先想最简单的想法,直接requests.get(url),然后分析获得的网页源代码,如果成功,完全不需要其他的高级方法了,见代码及结果:
目标网页

from lxml import etree
import requests
#目标网址
url = r'http://glidedsky.com/level/web/crawler-basic-2?page=1'
r = requests.get(url)
if '299' in r.text:
    print("成功进入")
else:
    print("进入失败")
    #根据xpath语法获取网页中想要的信息
    # selector = etree.HTML(r.text)
    # nums = selector.xpath("//div[@class='row']/div[@class='col-md-1']/text()")
    # print(nums)

结果截图:
结果截图
第二步
很明显,直接爬取是失败了,再高级一点,加头,加cookies,再尝试

#加头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0'}
sess = requests.session()
sess.headers = headers
r = sess.get(url)
#加cookies也是一样

很明显结果还是不对,不然对我个人而言没有提升,也就没有必要记录了
第三步
随你的想法来,想到啥招尽管上,但是注意不要犯法,警惕可能被封IP。
我是用selenium模拟一半,登上之后再用requests快速爬完1000页的数据,可以只用selenium,但是太慢了

driver = webdriver.Firefox()#火狐浏览器对象
url = r'http://glidedsky.com/login'#登录界面
driver.get(url)
driver.maximize_window()
time.sleep(3)
#定位输入(填自己的用户名和密码)
driver.find_element_by_id("email").send_keys("用户名")
driver.find_element_by_id("password").send_keys("密码")
#点击登陆
driver.find_element_by_class_name('btn-primary').click()
time.sleep(3)
#检验是否成功
if driver.current_url == 'http://glidedsky.com/':
    print("登陆成功")
else:
    print("失败")

这一次就模拟登录成功了,但是还不是目标网站,还有重要的一步,获取cookies,并交给requests.session()自动维护

sess = requests.session()
cookie_dict = driver.get_cookies()#获取上一步的成果,网页的cookies
cookie = {}
for i in cookie_dict:
    cookie[i["name"]] = i["value"]
# 把cookie字典转化为cookiejar
cookies = requests.utils.cookiejar_from_dict(cookie, cookiejar=None,overwrite=True)
#加头
sess.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0'}
#网址翻页不变的部分
base_url = 'http://glidedsky.com/level/web/crawler-basic-2?page='
#直接获得目标网址,并爬取1000页(计算就自己解决了吧)
for i in range(1,1001):
    re_ur = base_url+str(i)
    r = sess.get(re_ur,cookies=cookies)
    selector = etree.HTML(r.text)
    #获取每页的10个数字
    num_li = selector.xpath('//div[@class="row"]/div[@class="col-md-1"]/text()')

最终也很快就结束了,因为这个网站是测试用的,所有没有其他例如封IP,验证码,字体反爬之类的措施,只要进去了目标网址,基本就没有难度了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值