gpt4 book ai didi

python - 为每次获取更改用户代理字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:50 24 4
gpt4 key购买 nike

我正在使用以下代码更改用户代理字符串,但我想知道这是否会更改每个 browser.get 请求的用户代理字符串?

ua_strings = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
...
]

def parse(self, response):
profile = webdriver.FirefoxProfile()
profile.set_preference('general.useragent.override', random.choice(ua_string))
options = Options()
options.add_argument('-headless')
browser = webdriver.Firefox(profile, firefox_options=options)
browser.get(self.start_urls[0])

hrefs = WebDriverWait(browser, 60).until(
EC.visibility_of_all_elements_located((By.XPATH, '//div[@class="discoverableCard"]/a'))
)

pages = []

for href in hrefs:
pages.append(href.get_attribute('href'))

for page in pages:
browser.get(page)

""" scrape page """

browser.close()

或者我是否必须 browser.close() 然后创建新的 browser 实例以便为每个请求使用新的用户代理字符串?

    for page in pages:
browser = webdriver.Firefox(profile, firefox_options=options)
browser.get(page)

""" scrape page """

browser.close()

最佳答案

由于最初调用了 random.choice(),因此所有 browser.get() 请求的用户代理字符串都保持不变。为确保始终随机的用户代理,您可以创建一个 set_preference() 函数,您可以在每个循环中调用该函数。

def set_prefrences(self):
user_agent_string = random.choice(ua_string)

#print out user-agent on each loop
print(user_agent_string)
profile = webdriver.FirefoxProfile()
profile.set_preference('general.useragent.override', user_agent_string)
options = Options()
options.add_argument('-headless')
browser = webdriver.Firefox(profile, firefox_options=options)
return browser

然后在你的循环中可以是这样的:

for page in pages:
browser = set_preferences()
browser.get(page)

""" scrape page """

browser.close()

希望这对您有所帮助!

关于python - 为每次获取更改用户代理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51276719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com