繁体   English   中英

如何解决execfile中的python回溯错误?

[英]How to solve the python traceback error in execfile?

我在网上找到了一个代码,目前我正在尝试启动它。 但是我在跑步时遇到了一些问题。 如果有人愿意帮助我,那就太好了。 谢谢。

from concurrent.futures.thread import ThreadPoolExecutor
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import time
import random
import string
import re


chromeOptions = Options()
chromeOptions.headless = True #как будет запускаться хром - в фоне или нет
executor = ThreadPoolExecutor(20) #количество одновременных потоков

def generate_random_string(length):
letters = string.ascii_lowercase
rand_string = ''.join(random.choice(letters) for i in range(length))
return rand_string

# простейшая функция выгрузки всех ссылок с заданой страницы
def getlinks(url):
driver = webdriver.Chrome(executable_path="the path", options=chromeOptions) # path к chromedriver
list = []
driver.get(url)
a = driver.find_elements_by_xpath('.//a')
i = 0
for b in a:
i = i+1
link = b.get_attribute("href")
list.insert(i, link)
driver.quit()
return list

def scrape(url):
executor.submit(scraper, url)
executor.submit(scraper, a link/+generate_random_string(10))
#генерируем мусорные ссылки, если надо. кстати, если в тестируемом сайте есть функция поиска или любые другие страницы с тяжелыми запросами в БД, этот вариант - твой



def scraper(url):
driver = webdriver.Chrome(executable_path="the path", options=chromeOptions) #path к chromedriver
driver.get(url)
time.sleep(15)
driver.quit()

urls = getlinks("a link")
for url in urls * 10: #количество инстансов
scrape(url)

错误:

Traceback (most recent call last):
  File "D:\PyCharm Community Edition 2021.2.1\plugins\python-ce\helpers\pydev\pydevd.py", line 1483, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "D:\PyCharm Community Edition 2021.2.1\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/User/PycharmProjects/project/main.py", line 15
    letters = string.ascii_lowercase
          ^
IndentationError: expected an indented block

写入(链接)的位置必须是目标链接,写入的位置(路径)必须是 chromedriver.exe 的路径

Python 使用缩进来分隔代码块。 每次输入新范围时,python 解释器都需要一个缩进的代码块。 这就是您应该重新格式化代码的方式。 (只是为了确定我想补充一点,运行此代码需要适当的 selenium 设置。)

from concurrent.futures.thread import ThreadPoolExecutor
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import time
import random
import string
import re


chromeOptions = Options()
chromeOptions.headless = True #как будет запускаться хром - в фоне или нет
executor = ThreadPoolExecutor(20) #количество одновременных потоков

def generate_random_string(length):
    letters = string.ascii_lowercase
    rand_string = ''.join(random.choice(letters) for i in 
    range(length))
    return rand_string

 # простейшая функция выгрузки всех ссылок с заданой страницы
def getlinks(url):
    driver = webdriver.Chrome(executable_path="the path", 
    options=chromeOptions)                         
 # path к chromedriver
    list = []
    driver.get(url)
    a = driver.find_elements_by_xpath('.//a')
    i = 0
    for b in a:
        i = i+1
        link = b.get_attribute("href")
        list.insert(i, link)
    driver.quit()
    return list

def scrape(url):
    executor.submit(scraper, url)
    executor.submit(scraper, a link/+generate_random_string(10))
#генерируем мусорные ссылки, если надо. кстати, если в тестируемом сайте         
#есть функция поиска или любые другие страницы с тяжелыми запросами в БД,                 
#этот вариант - твой



def scraper(url):
    driver = webdriver.Chrome(executable_path="the path", 
    options=chromeOptions)         
    #path к chromedriver
    driver.get(url)
    time.sleep(15)
    driver.quit()

urls = getlinks("a link")
for url in urls * 10: #количество инстансов
    scrape(url)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM