我正在尝试从第 1-100 页中抓取沃尔玛类别。我在请求页面之前实现了随机标题和随机等待时间,但在抓取前几页后仍然使用验证码。沃尔玛是不是很擅长检测刮板,还是我做错了什么?
我正在使用 selenium、bs4 和 random_user_agent。
代码:
# Randomize User Agents
software_names = [SoftwareName.CHROME.value]
operating_systems = [OperatingSystem.WINDOWS.value]
user_agent_rotator = UserAgent(
software_names=software_names, operating_systems=operating_systems, limit=1000)
user_agents = user_agent_rotator.get_user_agents()
################################################
# Selenium
options = webdriver.ChromeOptions()
options.add_argument('--profile-directory=Profile 1')
options.add_argument('use-fake-ui-for-media-stream')
options.add_argument(
'load-extension=' + r'ad blocker path here')
options.add_argument("window-size=900,1080")
driver = webdriver.Chrome(
ChromeDriverManager().install(), options=options)
driver.execute_cdp_cmd('Network.setUserAgentOverride', {
"userAgent": user_agent_rotator.get_random_user_agent()})
driver.get(url)
################################################
# Randomize time between requests
time.sleep(randint(5, 15))
这是我尝试做的,所以我不会被阻止。有没有更好的方法?谢谢。
答案 0 :(得分:2)
对于所有请求,您的 IP 仍然相同。 您可以考虑使用 python requests with tor 这当然需要更长的时间,因为请求 get 是通过 TOR 路由的。我不熟悉使用 selenium 在 TOR 上应用代理,但我敢打赌,您可以找到很多教程。
Walmart 可能有这种验证码机制是有原因的,所以也许会寻找另一种获取数据的方法。