# Requests & Beautifulsoup4 ## Requests ### Install ``` pip install requests BeautifulSoup4 lxml ``` ### Import ``` import requests from bs4 import BeautifulSoup ``` ### HTTP methods GET - когда мы хотим запросить информацию у сервера. HEAD - тоже самое, только без тела запрос POST - применяется для передачи пользовательских данных заданному ресурсу PUT - применяется для загрузки содержимого запроса на указанный в запросе URI DELETE - удаляет указанный ресурс TRACE - возвращает полученный запрос так, что клиент может увидеть, какую информацию промежуточные серверы добавляют или изменяют в запросе ### Status code 200 - ОК 301 - перемещено навсегда 400 - плохой, неверный запрос 404 - не найдено 500 - внутренняя ошибка сервера #### The Response получаем результат нашей страницы с помощью get запроса ``` response = requests.get('https://api.github.com') ``` проверяем полученный код ``` if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.') ``` другие запросы ``` requests.post('https://httpbin.org/post', data={'key':'value'}) requests.put('https://httpbin.org/put', data={'key':'value'}) requests.delete('https://httpbin.org/delete') requests.head('https://httpbin.org/get') ``` ## bs4 это наша web страница, и мы хотим получить текст ``` <!DOCTYPE html> <html> <head> <title>Contrived Example</title> </head> <body> <p id="eggman"> I am the egg man </p> <p id="walrus"> I am the walrus </p> </body> </html> ``` сохраняем ее как a.html ``` from bs4 import BeautifulSoup raw_html = open('contrived.html').read() html = BeautifulSoup(raw_html, 'lxml') for p in html.select('p'): if p['id'] == 'walrus': print(p.text) ``` а это мы получаем массив математиков ``` raw_html = requests.get('http://www.fabpedigree.com/james/mathmen.htm') html = BeautifulSoup(raw_html.content, 'lxml') for i, li in enumerate(html.select('li')): print(i, li.text) ``` а теперь попробуем скачать