python 用request 不能获取到<p>文本

'''
['False', 'None', 'True', 'and', 'as',
   'assert', 'async', 'await', 'break', 
   'class', 'continue', 'def', 'del', 
   'elif', 'else', 'except', 'finally', 
   'for', 'from', 'global', 'if', 'import',
   'in', 'is', 'lambda', 'nonlocal', 'not', 
   'or', 'pass', 'raise', 'return', 'try',
   'while', 'with', 'yield']
'''

from lxml import etree as tt  # 导入lxml 库 中 etree 模块  自定义 名 tt
import requests as gg #导入 requests库   自定义 名 gg
from time import sleep as  sp #导入time 库中 sleep 模块 自定义 sp
def jc(): #自定义函数
    """这是一个判断用函数"""
    while True:  # while 循环
        print("这是一个小说下载功能,请输入小说第一章地址:")  # 提示
        global  a,b #声明变量为全局变量
        a = input("")  # 获取输入字符串
        print("检查输入:%s" % a)  # 输出内容以检查
        print("正确请输入 1,错误请输入2")  # 判断用途
        b = int(input())  # 获取输入并转换成 int 型

        if b == 1:  # 判断值
            print("开始下载.........")  # 提示
            break  # 跳出循环

def pd200() :
    """判断服务器返回值"""
    global  b,repa
    repa = gg.get(a,headers=headers) #requsts get 方式请求
    repa.encoding='utf-8'
    if repa.status_code ==200: #判断是否返回200 以表示链接正常
        op = 0  #定义一个变量
        tf = "■" #定义一个字符串符号
        '''
        while True:

            op +=1 #变量自增
            print("%s"%(tf*op),end="") #字符串自增 提示用
            sp(1) # 添加1秒的延时
            if op >3: #判断变量 跳出循环

                break #跳出当前循环
                '''
        print() #清楚end="" 对输出不自动换行的设定
        htx()  # 调用自定义下载函数
    else: #如果没有返回200 提示并重置 b变量值
        b=0
        print("当前网站不支持操作, 请更换源站点! 系统重启中....")

#------------------------------------------------------
def htx():
    """自定义下载函数"""



    ''' 
  
   hq = tt.fromstring(repa.text)

    tre = hq.xpath('//div/p')
    '''

    print(repa.text)




#------------------------------------------------------
b = 0 #给b一个初始值
headers= {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36'
    }  # 告诉网站我是浏览器

#------------------------------------------------------
while True:

    if b ==0: #如果b=0 判断其首次使用 重复调用函数
        jc() #调用自定义函数
    else:
        print("当前设置:%d 尝试下载中....."%b)
    pd200()#调用自定义函数
    break


看了好多文档说 requests 只能拿静态数据 ,动态数据不能获取

emm我很抱歉........

全部耗时2天 ,敲敲打打 照着抄代码都能错,技术难搞哦  

'''
['False', 'None', 'True', 'and', 'as',
   'assert', 'async', 'await', 'break', 
   'class', 'continue', 'def', 'del', 
   'elif', 'else', 'except', 'finally', 
   'for', 'from', 'global', 'if', 'import',
   'in', 'is', 'lambda', 'nonlocal', 'not', 
   'or', 'pass', 'raise', 'return', 'try',
   'while', 'with', 'yield']
'''

from lxml import etree as tt  # 导入lxml 库 中 etree 模块  自定义 名 tt
import requests as gg  # 导入 requests库   自定义 名 gg
from time import sleep as  sp  # 导入time 库中 sleep 模块 自定义 sp



def jc():  # 自定义函数
    """这是一个判断用函数"""
    while True:  # while 循环
        print("这是一个小说下载功能,请输入小说第一章地址:")  # 提示
        global url, b  # 声明变量为全局变量
        url = input("")  # 获取输入字符串
        print("检查输入:%s" % url)  # 输出内容以检查
        print("正确请输入 1,错误请输入2")  # 判断用途
        b = int(input())  # 获取输入并转换成 int 型

        if b == 1:  # 判断值
            print("开始下载.........")  # 提示
            break  # 跳出循环


def pd200():
    """判断服务器返回值"""
    global b, rrt #声明全局变量


    rrt = gg.get(url=url, headers=headers)  # requsts get 方式请求
    rrt.close()
    rrt.encoding='utf-8' #编码格式设置
    if rrt.status_code == 200:  # 判断是否返回200 以表示链接正常
        op = 0  # 定义一个变量
        tf = "■"  # 定义一个字符串符号

        while True:

            op +=1 #变量自增
            print("%s"%(tf*op),end="") #字符串自增 提示用
            sp(1) # 添加1秒的延时
            if op >2: #判断变量 跳出循环

                break #跳出当前循环

        print()  # 清楚end="" 对输出不自动换行的设定
        htx()  # 调用自定义下载函数
    else:  # 如果没有返回200 提示并重置 b变量值
        b = 0
        print("当前网站不支持操作, 请更换源站点! 系统重启中....")


# ------------------------------------------------------
def htx():
    """自定义下载函数"""

    hq =tt.HTML(rrt.text) #lxml处理html
    teltb =hq.xpath('//h1/text()')#获取表头
    uui=hq.xpath('//div[@class ="panel-body"]/p/text()')#lxml.xpath 定位
    kku = "\n".join(uui) #列表转换
    name ="".join(teltb)

    with open("%s.txt"%name,"w",encoding="utf-8")as f:
         f.write(kku)



# ------------------------------------------------------
b = 0  # 给b一个初始值
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}  # 告诉网站我是浏览器

# ------------------------------------------------------
while True:

    if b == 0:  # 如果b=0 判断其首次使用 重复调用函数
        jc()  # 调用自定义函数
    else:
        print("当前设置:%d 尝试下载中....." % b)

    pd200()  # 调用自定义函数
    break

现在还有个小问题 name 获取到是(1/2)这种 命名 (1/2).txt 会报错 找不到文件 

emm

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值