dtsuifeng 发表于 2022-11-27 12:08

Headers 加个引号

弄爬虫构造header时,加引号麻烦的不行。只是简单的加了个引号,没有对不需要的数据过滤。主要是弄界面麻烦。
"""
Headers 加引号
2022.11.26
by:三张
"""
#!/usr/bin/env python
#-*- coding:utf-8 -*-

import os, sys
from tkinter import *
from tkinter.font import Font
from tkinter.ttk import *
#Usage:showinfo/warning/error,askquestion/okcancel/yesno/retrycancel
from tkinter.messagebox import *
#Usage:f=tkFileDialog.askopenfilename(initialdir='E:/Python')
#import tkinter.filedialog as tkFileDialog
#import tkinter.simpledialog as tkSimpleDialog#askstring()
import re

class Application_ui(Frame):
    #这个类仅实现界面生成功能,具体事件处理代码在子类Application中。
    def __init__(self, master=None):
      Frame.__init__(self, master)
      self.master.title('三的小工具')
      self.master.geometry('955x500')
      self.createWidgets()

    def createWidgets(self):
      self.top = self.winfo_toplevel()

      self.style = Style()

      self.style.configure('Tftitle.TLabelframe', font=('宋体',9))
      self.style.configure('Tftitle.TLabelframe.Label', font=('宋体',9))
      self.ftitle = LabelFrame(self.top, text='Headers 加引号', style='Tftitle.TLabelframe')
      self.ftitle.place(relx=0.008, rely=0.017, relwidth=0.982, relheight=0.998)

      
      self.stext = Text(self.ftitle,font=('宋体',9),wrap=NONE,)
      self.stext.place(relx=0.017, rely=0.036, relwidth=0.957, relheight=0.412)
      
      #垂直滚动条
      self.VScroll1 = Scrollbar(self.stext, orient='vertical' )
      self.VScroll1.pack(side=RIGHT,fill=Y)
      self.VScroll1.config(command=self.stext.yview) # 将文本框关联到滚动条上,滚动条滑动,文本框跟随滑动
      self.stext.config(yscrollcommand=self.VScroll1.set) # 将滚动条关联到文本框
      #水平滚动条      
      self.stextxscroll= Scrollbar(self.stext,orient=HORIZONTAL)
      self.stextxscroll.pack(side=BOTTOM,fill=X) # side是滚动条放置的位置,上下左右。fill是将滚动条沿着y轴填充
      self.stextxscroll.config(command=self.stext.xview) # 将文本框关联到滚动条上,滚动条滑动,文本框跟随滑动
      self.stext.config(xscrollcommand=self.stextxscroll.set) # 将滚动条关联到文本框
      
      
      self.totext = Text(self.ftitle,font=('宋体',9),wrap=NONE)
      self.totext.place(relx=0.017, rely=0.552, relwidth=0.957, relheight=0.412)

      self.VScroll2 = Scrollbar(self.totext, orient='vertical')
      self.VScroll2.pack(side=RIGHT,fill=Y)
      # 将滚动条与文本框关联
      self.VScroll2.config(command=self.totext.yview) # 将文本框关联到滚动条上,滚动条滑动,文本框跟随滑动
      self.totext.config(yscrollcommand=self.VScroll2.set) # 将滚动条关联到文本框
         #水平滚动条      
      self.totextxscroll= Scrollbar(self.totext,orient=HORIZONTAL)
      self.totextxscroll.pack(side=BOTTOM,fill=X) # side是滚动条放置的位置,上下左右。fill是将滚动条沿着y轴填充
      self.totextxscroll.config(command=self.totext.xview) # 将文本框关联到滚动条上,滚动条滑动,文本框跟随滑动
      self.totext.config(xscrollcommand=self.totextxscroll.set) # 将滚动条关联到文本框



      def cut(editor, event=None):
            editor.event_generate("<<Cut>>")
      def copy(editor, event=None):
            editor.event_generate("<<Copy>>")
      def paste(editor, event=None):
            editor.event_generate('<<Paste>>')
      def rightKey(event, editor):
            menubar.delete(0,END)
            menubar.add_command(label='剪切',command=lambda:cut(editor))
            menubar.add_command(label='复制',command=lambda:copy(editor))
            menubar.add_command(label='粘贴',command=lambda:paste(editor))
            menubar.post(event.x_root,event.y_root)
      menubar = Menu(self.top,tearoff=False)#创建一个菜单
      self.stext.bind("<Button-3>", lambda x: rightKey(x, self.stext))#绑定右键鼠标事件
      self.totext.bind("<Button-3>", lambda x: rightKey(x, self.totext))#绑定右键鼠标事件



      self.style.configure('Tcleartext.TButton', font=('宋体',9))
      self.cleartext = Button(self.ftitle, text='清空', command=self.cleartext_Cmd, style='Tcleartext.TButton')
      self.cleartext.place(relx=0.239, rely=0.463, relwidth=0.086, relheight=0.073)

      self.style.configure('Taddyh.TButton', font=('宋体',9))
      self.addyh = Button(self.ftitle, text='加引号', command=self.addyh_Cmd, style='Taddyh.TButton')
      self.addyh.place(relx=0.512, rely=0.463, relwidth=0.095, relheight=0.073)


class Application(Application_ui):
    #这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。
    def __init__(self, master=None):
      Application_ui.__init__(self, master)

    def cleartext_Cmd(self, event=None):
      #TODO, Please finish the function here!
      #清空两个文本框
      self.stext.delete(1.0,"end")
      self.totext.delete(1.0,"end")
         

    def addyh_Cmd(self, event=None):
      #TODO, Please finish the function here!
      cookiestext=self.stext.get(1.0,"end")
      linetext=cookiestext.split("\n")
      newtext=""
      for text in linetext:
            if text != "":
                tmp=re.sub(":\s+","\':\'",text,count=1,flags=False)
                newtext += "'" + tmp +"',\n"
      
      self.totext.insert(1.0,newtext)
      self.totext.update()

      

if __name__ == "__main__":
    top = Tk()
    Application(top).mainloop()


悦来客栈的老板 发表于 2022-11-27 12:52

使用这个工具站点试试:

https://spidertools.cn/#/formatHeader

surepj 发表于 2022-11-27 14:07

我一般是用网站,或者自己的py代码处理,代码如下:
# 请求头文本放在两个'''中间
headerstr = '''
Accept: text/html,
Cookie: NMG7bjX-h_oGy51IJ-iGTVg
Referer: https://baidu.com
User-Agent: Chrome
'''

h_list = # 列表生成式
headers = {i.split(": "): i.split(": ")[-1] for i in h_list}# 字典生成式
format_header = 'headers = ' + str(headers).replace("{", "{\n").replace("',", "',\n").replace("}", "\n}")
print(format_header)# 格式化后的header,有换行等格式

效果:
headers = {
'Accept': 'text/html,',
'Cookie': 'NMG7bjX-h_oGy51IJ-iGTVg',
'Referer': 'https://baidu.com',
'User-Agent': 'Chrome'
}

天真Aro 发表于 2022-11-27 12:48

感谢。好像有帖子也做了这个,自动加上headers = { xxxx },更方便的

luxingyu329 发表于 2022-11-27 13:09

我记得看过一个视频,直接在 pycharm里可以加,看演示是快捷键一键加上的,尝试正则等也没有一键成功。不知道哪个大佬能指点一二?

温柔 发表于 2022-11-27 14:10

记得有个插件,可以在复制时自动给headers,data之类的加上引号

cflying 发表于 2022-11-27 14:50

每次我都自己手动加,这个确实是个好方法,

dujiu3611 发表于 2022-11-27 16:42

一直使用在线工具的,可以看看这个
https://httpbin.org/

dtsuifeng 发表于 2022-11-27 17:03

天真Aro 发表于 2022-11-27 12:48
感谢。好像有帖子也做了这个,自动加上headers = { xxxx },更方便的

是个好主意,一步到位。这个应该好改。对于大家都不难。

yjn866y 发表于 2022-11-27 18:26

悦来客栈的老板 发表于 2022-11-27 12:52
使用这个工具站点试试:

https://spidertools.cn/#/formatHeader

收下了,工具不错
页: [1] 2
查看完整版本: Headers 加个引号