写标题的更简单的方法



我正在寻找一种更简单的方法来编写下面示例中的这些头。我为每个循环都有一个,这样它就会为每个请求随机生成一个新的用户代理;然而,我正在寻找一种方法,不必为每个循环写那么多次。

代码示例:

for example in examples:
headers = {
'accept': '*/*',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,ru;q=0.6',
'referer': 'https://www.google.com/',
'user-agent': random.choice(all_user_agents),
}
response = request.get(url, headers=headers)
while 10 > i:
headers = {
'accept': '*/*',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,ru;q=0.6',
'referer': 'https://www.google.com/',
'user-agent': random.choice(all_user_agents),
}
response = request.get(url, headers=headers)
for test in tests:
headers = {
'accept': '*/*',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,ru;q=0.6',
'referer': 'https://www.google.com/',
'user-agent': random.choice(all_user_agents),
}
response = request.get(url, headers=headers)

您可以将accept-languagereferer等常见标头值提取到一个常见的dict对象中,然后根据需要克隆并更新这些默认标头:

import random
import string
import requests as req
default_headers = {
'accept': '*/*',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,ru;q=0.6',
'referer': 'https://www.google.com/',
# 'user-agent': None,
}
# - SETUP -
examples = ['a']
tests = []
url = 'TODO'
all_user_agents = string.ascii_lowercase
i = 5
# - LOOP -
for _ in examples:
# >  .copy() is optional
headers = default_headers.copy()
response = req.get(url, headers=headers)
while 10 > i:
headers['user-agent'] = random.choice(all_user_agents)
response = req.get(url, headers=headers)
# >  I added the line below, so we can avoid an infinite loop
i += 1
for _ in tests:
headers['user-agent'] = random.choice(all_user_agents)
response = req.get(url, headers=headers)

最新更新