@wkainen

Как сделать поиск по первому заходу на сайт?

Я новичок и без образования, помогите пожалуйста
Написал парсер, который ходит по списку сайтов из Эксель и по возможности извлекает соц сети.
Проблема в том, что я не понимаю как сделать, чтобы он извлекал сразу же все соц сети, а не каждый раз для определенной делал заход. Пробовал переносить Data, чтобы он не отбирал снова, но он ее просто не видит в поиске допустим дискордан,помогите пожалуйся. А так Эта штука работает
# Ищет тг и твиттер по сайтам и дискорд
options = Options()
ua = UserAgent()
userAgent = ua.random
option = webdriver.ChromeOptions()
option.add_argument('headless')
option.add_argument(f'user-agent={userAgent}')
browser = webdriver.Chrome(executable_path='//Users//kainen//Downloads//chromedriver//chromedriver', options=option)
            
def telegram(tg_web):

    try:
        if tg_web:

            browser.get(f'{tg_web}')

            soup = BeautifulSoup(browser.page_source, 'lxml')
            #time.sleep(2)
            scrapped_page = soup.findAll('a')
            #print(scrapped_page)
            data = []
            for All_tags in scrapped_page:
                All_link = All_tags.get('href')
                
                data.append(All_link)
                
                for i in range(len(data)):
                    tg_followers = ''
                    if 't.me' in data[i]:
                        tg_followers = data[i]        
                        break
        
                    
        else:
            tg_followers = ''
            
    except Exception as e:
        tg_followers = ''
        
        print(f'Error occur with link {tg_web}: {e}')

    return tg_followers


def twitter(tw_web):

    try:
        if tw_web:

            browser.get(f'{tw_web}')

            soup = BeautifulSoup(browser.page_source, 'lxml')
            
            scrapped_page = soup.findAll('a')
            #print(scrapped_page)
            data = []
            for All_tags in scrapped_page:
                All_link = All_tags.get('href')
                
                data.append(All_link)
                
                for i in range(len(data)):
                    tw_followers = ''
                    if 'twitter' in data[i]:
                        tw_followers = data[i]        
                        break
        
                    
        else:
            tw_followers = ''
            
    except Exception as e:
        tw_followers = ''
        
        print(f'Error occur with link {tw_web}: {e}')

    return tw_followers

def discord(disc_web):

    try:
        if disc_web:

            browser.get(f'{disc_web}')

            soup = BeautifulSoup(browser.page_source, 'lxml')
            
            scrapped_page = soup.findAll('a')
            #print(scrapped_page)
            data = []
            for All_tags in scrapped_page:
                All_link = All_tags.get('href')
                
                data.append(All_link)
                
                for i in range(len(data)):
                    disc_followers = ''
                    if 'discord' in data[i]:
                        disc_followers = data[i]        
                        break
        
                    
        else:
            disc_followers = ''
            
    except Exception as e:
        disc_followers = ''
        
        print(f'Error occur with link {tw_web}: {e}')

    return disc_followers

def linked(linked_web):

    try:
        if linked_web:

            browser.get(f'{linked_web}')

            soup = BeautifulSoup(browser.page_source, 'lxml')
            
            scrapped_page = soup.findAll('a')
            #print(scrapped_page)
            data = []
            for All_tags in scrapped_page:
                All_link = All_tags.get('href')
                
                data.append(All_link)
                
                for i in range(len(data)):
                    linked_followers = ''
                    if 'linked' in data[i]:
                        linked_followers = data[i]        
                        break
        
                    
        else:
            linked_followers = ''
            
    except Exception as e:
        linked_followers = ''
        
        print(f'Error occur with link {linked_web}: {e}')

    return linked_followers





def main():
    print(f'\nRescoring started at {datetime.datetime.now()}')
    writer = pd.ExcelWriter(f'{os.getcwd()}/Closed_lost_2020_followers.xlsx')

    df = pd.read_excel('//Users//kainen//Downloads//chromedriver//Result_25.xlsx', sheet_name=0)
    df['Telegram_followers'] = ''
    df['Twitter_followers'] = ''
    df['Discord_followers'] = ''
    df['linked_followers'] = ''
    
    for index, row in df.iterrows():
        try:
            df.loc[index, 'Telegram_followers'] = telegram(row['telegram'])
            df.loc[index, 'Twitter_followers'] = twitter(row['telegram'])
            df.loc[index, 'Discord_followers'] = discord(row['telegram'])
            df.loc[index, 'linked_followers'] = linked(row['telegram'])

            
            print(f'Lead: {row["id"]}, tg: {df.loc[index, "Telegram_followers"]}, tw: {df.loc[index, "Twitter_followers"]}, disc: {df.loc[index, "Discord_followers"]}, linked: {df.loc[index, "linked_followers"]}')

        except Exception as e:
            print(f'Error occured with lead {row["id"]}: {e}')
    df.to_excel(writer, sheet_name='Closed_lost_with_followers', index=False)
    writer.save()
    print (f'\nScript executed!\n')
    return

 
#schedule.every(30).minutes.do(main)   
    
    
if __name__ == '__main__':
    try:
    
        main()
    except Exception as e:
        print(f'\nError occured: {e}')
        
    #access_token = get_access_token('amocrm_followers_scrapping.db')
    #print(access_token)
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@PavelMos
При обходе с сайтов сначала получить исходный код страницы soup = BeautifulSoup(browser.page_source, 'lxml')
а потом к нему применять разные функции - поиск linked, twitter и так далее
То есть в main
for website in websiteList:
..
soup = BeautifulSoup(browser.page_source, 'lxml')
linkedResult = linked(soup) # принимает на вход не url а уже разобранную структуру т.е. soup
tgResult = telegram (soup)

Изучай основы языка, без этого будешь на самых простых местах стопориться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы