рд╣реИрд▓реЛ, рдЦрд╝рдмрд░реЛрд╡рдЪрди! рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереА, рд▓реЗрдХрд┐рди рд╣рд┐рдореНрдордд рдирд╣реАрдВ рд╣реБрдИред
рдореЗрд░реА рдкреЛрд╕реНрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬреВрдирд┐рдпрд░ рд╕реЗ рдордзреНрдп рддрдХ рдореЗрд░реЗ рдкрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧреА, рдФрд░ рдлрд┐рд░ рд╢рд╛рдпрдж рд╕реАрдирд┐рдпрд░ рддрдХ рднреАред рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░реЗрдВрдЧреЗред
рдХреБрдЫ рдЕрд▓реНрдкрдЬреНрдЮрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреАрдПрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрдВрдд рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдкрд╛рдпрдерди рдиреЗ рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЙрдиреНрдирддрд┐ рдирд╣реАрдВ рд╣реБрдИред
рдореВрд▓ рдмрд╛рддреЗрдВ рдЦреБрдж рдирд┐рд░рд╛рд╢ рд╣реЛ рдЧрдИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдбреЗрдврд╝ рд╕рд╛рд▓ рддрдХ рдкрдврд╝рд╛рдпрд╛ рдерд╛ред рдЕрдм рдореИрдВ рднрд╛рд╖рд╛ рдХрд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдореИрдВ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХрд░реВрдВрдЧрд╛, рдореИрдВ рд╕рднреА рдирдП рдФрд░ рдирдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЬрдЧрд░ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ :)
рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ? рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕рд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ рдФрд░ рдЖрдк рдЙрди рдкрд░ рдкреИрд╕рд╛ рднреА рдХрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рддрдХ, рдореИрдВ рдЖрдкрдХреЛ
bs4 + рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рд╣рдо рдЕрдкрдиреЗ рдкреНрдпрд╛рд░реЗ
рд╣рдмрд░ рдХреЛ рдмрдЦреНрд╢ рджреЗрдВрдЧреЗ ред
рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ
рдлрд░реНрдЬреА_рд╕реБрд░рд╛рдЧреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдпрд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдХреЛ рдирдХрд▓реА рдмрдирд╛рддрд╛ рд╣реИред
ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox}
рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рдЕрдЧрд▓рд╛ рдЫреЛрдЯрд╛ рдмреНрд▓реЙрдХ рд╣реИред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдордиреЗ ua рдЪрд░ рдмрдирд╛рдпрд╛, рдЬреЛ UserAgent рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЕрдм рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВред
def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error")
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдВрдХ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдо рдХрдХреНрд╖рд╛ "post__title_link" рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПред рддреЛ рдЪрд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред
url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрди рдкреЛрд╕реНрдЯреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдерд╛ред
рд╕реНрд░реЛрдд (рдкреВрд░реНрдг) рдХреЛрдб, рдХреЗрд╡рд▓ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд┐рдирд╛:
from bs4 import BeautifulSoup as bs from fake_useragent import UserAgent import requests ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо! рд▓рд╛рдЗрди рдХреА рдкрд░реНрдЪрд┐рдпреЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╣рдо рдареАрдХ 20 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдорд┐рд▓реЗред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ :)
рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд░рдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ:
рдЕрдиреБрд░реЛрдз:
* рдирд┐рдЪреЛрдбрд╝ *bs4:
* рдирд┐рдЪреЛрдбрд╝ *рдирдХрд▓реА_рд╕реБрдкрд░рдЧреЗрдВрдЯ:
* рдирд┐рдЪреЛрдбрд╝ *рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж! рдЬрд▓реНрдж рдорд┐рд▓рддреЗ рд╣реИрдВ!
рдкреБрдирд╢реНрдЪ рдпрджрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЖрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛