Parser program in python

Почему стоит научиться «парсить» сайты, или как написать свой первый парсер на Python

image

Для начала давайте разберемся, что же действительно означает на первый взгляд непонятное слово — парсинг. Прежде всего это процесс сбора данных с последующей их обработкой и анализом. К этому способу прибегают, когда предстоит обработать большой массив информации, с которым сложно справиться вручную. Понятно, что программу, которая занимается парсингом, называют — парсер. С этим вроде бы разобрались.

Перейдем к этапам парсинга.

И так, рассмотрим первый этап парсинга — Поиск данных.

Так как нужно парсить что-то полезное и интересное давайте попробуем спарсить информацию с сайта work.ua.
Для начала работы, установим 3 библиотеки Python.

pip install beautifulsoup4

Без цифры 4 вы ставите старый BS3, который работает только под Python(2.х).

pip install requests
pip install pandas

Теперь с помощью этих трех библиотек Python, можно проанализировать нашу веб-страницу.

Второй этап парсинга — Извлечение информации.

Попробуем получить структуру html-кода нашего сайта.
Давайте подключим наши новые библиотеки.

import requests from bs4 import BeautifulSoup as bs import pandas as pd 

И сделаем наш первый get-запрос.

URL_TEMPLATE = "https://www.work.ua/ru/jobs-odesa/?page=2" r = requests.get(URL_TEMPLATE) print(r.status_code) 

Статус 200 состояния HTTP — означает, что мы получили положительный ответ от сервера. Прекрасно, теперь получим код странички.

Получилось очень много, правда? Давайте попробуем получить названия вакансий на этой страничке. Для этого посмотрим в каком элементе html-кода хранится эта информация.

У нас есть тег h2 с классом «add-bottom-sm», внутри которого содержится тег a. Отлично, теперь получим title элемента a.

soup = bs(r.text, "html.parser") vacancies_names = soup.find_all('h2', class_='add-bottom-sm') for name in vacancies_names: print(name.a['title']) 

Хорошо, мы получили названия вакансий. Давайте спарсим теперь каждую ссылку на вакансию и ее описание. Описание находится в теге p с классом overflow. Ссылка находится все в том же элементе a.

Some information about vacancy.

vacancies_info = soup.find_all('p', class_='overflow') for name in vacancies_names: print('https://www.work.ua'+name.a['href']) for info in vacancies_info: print(info.text) 

И последний этап парсинга — Сохранение данных.

Давайте соберем всю полученную информацию по страничке и запишем в удобный формат — csv.

import requests from bs4 import BeautifulSoup as bs import pandas as pd URL_TEMPLATE = "https://www.work.ua/ru/jobs-odesa/?page=2" FILE_NAME = "test.csv" def parse(url = URL_TEMPLATE): result_list = r = requests.get(url) soup = bs(r.text, "html.parser") vacancies_names = soup.find_all('h2', class_='add-bottom-sm') vacancies_info = soup.find_all('p', class_='overflow') for name in vacancies_names: result_list['href'].append('https://www.work.ua'+name.a['href']) result_list['title'].append(name.a['title']) for info in vacancies_info: result_list['about'].append(info.text) return result_list df = pd.DataFrame(data=parse()) df.to_csv(FILE_NAME) 

После запуска появится файл test.csv — с результатами поиска.

Источник

Python Parser

Python Parser

In this article, parsing is defined as the processing of a piece of Python program and converting these codes into machine language. In general, we can say parse is a command for dividing the given program code into a small pieces of code for analyzing the correct syntax. In Python, a built-in module called parse provides an interface between the internal parser and compiler; this module allows the Python program to edit the small fragments of code and create the executable program from this edited parse tree of Python code.

Working of Python Parse

In this article, the Python parser is mainly used for converting data in the required format, known as parsing. As in many different applications, data obtained can have different data formats, which might not be suitable for the particular application. Here comes the use of a parser which means parsing is necessary for such situations. In parser consists of two parts lexer and a parser; in some cases, only parsers are used.

There is also a concept of argument parsing, which means in Python; we have a module named argparse which is used for parsing data with one or more arguments from the terminal or command line. There are other different modules when working with argument parsings, such as getopt, sys, and argparse modules. Now let us below the demonstration for the Python parser.

Examples of Python Parser

Now let us see in the below example how the parser module is used for parsing the given expressions.

Example #1

import parser print("Program to demonstrate parser module in Python") print("\n") exp = "5 + 8" print("The given expression for parsing is as follows:") print(exp) print("\n") print("Parsing of given expression results as: ") st = parser.expr(exp) print(st) print("\n") print("The parsed object is converted to the code object") code = st.compile() print(code) print("\n") print("The evaluated result of the given expression is as follows:") res = eval(code) print(res)

Python Parser-1.1

In the above program, we first need to import the parser module, and then we declare an expression to calculate and parse this expression; we have to use a parser.expr() function. Then we can evaluate the given expression using eval() function.

In Python, sometimes we get data consisting of date-time format, which would be in CSV or text format. So to parse such formats in proper date-time formats, Python provides the parse_dates() function.

In Python, we can also parse command-line options and arguments using an argparse module which is very user-friendly for the command-line interface. Suppose we have Unix commands to execute through a Python command-line interface such as ls which lists all the directories in the current drive, and it will take many different arguments also; therefore, to create such a command-line interface, we use an argparse module in Python. Therefore, to create a command-line interface in Python, we need to do the following; firstly, we have to import an argparse module, then we create an object for holding arguments using ArgumentParser() through the argparse module, later we can add arguments to the ArgumentParser() object that will be created. We can run any command in the Python command line. Note as running any commands is not free other than the help command. So here is a small piece of code for how to write the Python code to create a command line interface using an argparse module.

We have created an object using ArgumentParser(), and then we can parse the arguments using the parser.parse_args() function.

parser = argparse.ArgumentParser() parser.parse_args()

To add the arguments, we can use add_argument() and pass the argument to this function, such as a parser.add_argument(“ ls ”). So let us see a small example below.

Example #2

import argparse parser = argparse.ArgumentParser() parser.add_argument("ls") args = parser.parse_args() print(args.ls)

Python Parser-1.2

So in the above program, we can see the screenshot of the output as we cannot use any other commands, so it will give an error, but when we have an argparse module, then we can run the commands in the python shell as follows:

$ python ex_argparse.py --help usage: ex_argparse.py [-h] echo

Positional Arguments:

Optional Arguments:

-h, --helpshow this help message and exit $ python ex_argparse.py Educba Educba

Conclusion

In this article, we conclude that Python provides a parsing concept. In this, we saw that we could even use a parser module for using it as a command-line interface where we can run the commands easily using the argparse module in Python. In the above, we saw how to use argparse and how we can run the commands in a Python terminal.

This is a guide to Python Parser. Here we also discuss the introduction and working of Python parser along with different examples and its code implementation. You may also have a look at the following articles to learn more –

Источник

Читайте также:  Word count python program
Оцените статью