私は Pyppetter を試していますが、headless = False ではなく、headless でボットが検出される理由がわかりません。
これが私のコードです(プロキシサーバーの引数を削除するか、プロキシサーバーに置き換える必要があることに注意してください):
ヘッドレスを行うときに微調整する必要がある設定があると思いますか? ありがとうございました。
import glob
import re
import datetime
import time
import random
import logging
import requests_html
from concurrent.futures import ThreadPoolExecutor
from collections import defaultdict
import lxml
import asyncio
import pandas as pd
from pyppeteer import launch
import pyppeteer
S_ALPHA_URL = 'https://seekingalpha.com/earnings/earnings-call-transcripts/{}'
async def make_request(url):
args = ['--proxy-server=xx.xxxx.'] # xxx replaced by your proxy server
for i in range(3):
try:
browser = await launch(headless = False,
args = args)
page = await browser.newPage()
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36')
await page.goto(url, {'waitUntil' : 'domcontentloaded'})
await page.reload()
content = await page.content()
print('return')
return content
except (pyppeteer.errors.PageError, pyppeteer.errors.TimeoutError):
continue
finally:
await browser.close()
def sa_test():
''' testing '''
for i in range(2):
start = time.time()
num = random.randint(1,100)
url = S_ALPHA_URL.format(num)
loop = asyncio.get_event_loop()
content = loop.run_until_complete(make_request(url))
soup = BeautifulSoup(content, 'html.parser')
print(soup)
print('time taken:', time.time() - start)
if __name__ = '__main__':
sa_test()