PythonChallenge过关日记三、四

本文详细记录了解决PythonChallenge中第三关和第四关的过程。第三关通过requests和re库获取并解析网页源码,找到隐藏的字母'linkedlist',从而得到新网址。第四关涉及自动化爬虫,不断根据提示更改参数,最终得到目标网址'peak.html'。整个过程展示了网页信息提取和动态网址处理的技术应用。
摘要由CSDN通过智能技术生成

PythonChallenge过关日记三、四

如题所示,需要找出两边各有三个大写字母的小写字母,即xXXXxXXXx中间的x
很显然,字符串在页面信息里面,就用requests.get来获取页面信息,并用findall来摘取所需要的范围。
再用一次findall找出符合标准的小写字母就可以了
得出答案linkedlist,替换之即可
故新网址为www.pythonchallenge.com/pc/def/linkedlist.html
打开后却发现网页提示你将html换成php,所以真·新网址为www.pythonchallenge.com/pc/def/linkedlist.php

from requests import get
from re import findall

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363"}
content = get("http://www.pythonchallenge.com/pc/def/equality.html",headers=headers).content
source = findall(r"<!--([\d\D]*)-->", content.decode())
source = source[0].split('\n')
# print(len(source[3]))#1252-1 80
result = []
for i in range(len(source)):
    word = findall("[a-z]+[A-Z][A-Z][A-Z]([a-z])[A-Z][A-Z][A-Z][a-z]+",source[i])
    if word :
        result.append(word)
print(result)

打开网页后是一张图片,可以点击,点击后进入另一个网站,会提示nothing的值,我们只需要将nothing=后面的数字改为已给的值即可。
事实上,这种事永远不可能这么简单,根据原网页的源代码中的注释来看,要替换很多次,所以我们可以用urllib、requests等库来实现自动访问并更换网址
值得注意的是,期间有需要人工计算的步骤,不过只有一次而已,在程序中更换nothing初值即可
最后我们得到的网址即http://www.pythonchallenge.com/pc/def/peak.html

import requests
import re
import time


url1 = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="
url2 = "25357"
while True:
    try:
        content = requests.get(url1+url2).content.decode()
        nothing = re.findall("nothing\D*([\d]*)",content) 
        url2 = nothing[0]
        print(url2)
        time.sleep(1.5)
    except :
        print(url1+url2)
        break


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值