Найти - Пользователи
Полная версия: Убрать лишние значения при парсинге названий
Начало » Центр помощи » Убрать лишние значения при парсинге названий
1
Antonpython
Есть код
import requests
import urllib
from bs4 import BeautifulSoup
import csv
from datetime import datetime
from multiprocessing import Pool


def get_html(url):
response = urllib.request.urlopen(url)
return response.read()


def parse(html):
soup = BeautifulSoup(html, "lxml")
table = soup.find('table', class_='l l_auto')

vacancies = []

for row in table.find_all('div', class_='search-result-description__item search-result-description__item_primary'):
cols = row.find_all('div', class_='search-result-item__head')

vacancies.append({
'title': cols[0].a.text,
})

for vacancy in vacancies:
print(vacancy)

salaries = []

for row in table.find_all('div', class_='search-result-description__item search-result-description__item_primary'):
cols2 = row.find_all('div', class_='b-vacancy-list-salary')

salaries.append({
'categories': cols2[0].div.find_all('meta', class_='baseSalary')
})

for salary in salaries:
print(salary)


def main():
parse(get_html(
'https://jobs.tut.by/search/vacancy?text=%D0%9B%D0%BE%D0%B3%D0%B8%D1%81%D1%82&only_with_salary=false&area=16&enable_snippets=true&clusters=true&salary='))


if __name__ == '__main__':
main()


Выводит такую запись
{'title': 'Специалист \u2062по логистике'}
{'title': 'Специалист \u2062по логистике'}
{'title': 'Специалист по ло\u2062гистике и сервису'}
{'title': 'Специалист \u2062по логистике'}
{'title': 'Менеджер п\u2062о логистике'}
{'title': 'Логист-э\u2062кспедитор'}
{'title': 'Логист / Специалист по о\u2062рганизации грузоперевозок'}
{'title': 'Оператор TMS (лог\u2062ист по транспорту)'}


Подскажите, пожалуйста, как убрать
  \u2062
???
Откуда она и почему образовывается, ведь в коде страницы ее нет
delvin-fil
Ну re же
 out = re.sub(r'\\u2062', '', salary)
Совершенно не правильно(с точки зрения PEP), но работает.
Antonpython
Не совсем понимаю, как воспользоваться Вашим советом)
delvin-fil
Добавтье модуль re
А перед print(salary) вставьте приведенный мной код(не нижний - это подпись моя)
Вот так:
 import requests
import urllib
from bs4 import BeautifulSoup
import csv
from datetime import datetime
from multiprocessing import Pool
import re #добавили модуль
####Ваш код
 out = re.sub(r'\\u2062', '', salary)
print(out) # уже не print(salary)
####Остальная часть кода
Antonpython
Ругается

import urllib
from bs4 import BeautifulSoup
import re

def get_html(url):
response = urllib.request.urlopen(url)
return response.read()

def parse(html):
soup = BeautifulSoup(html, "lxml")
table = soup.find('table', class_='l l_auto')

vacancies = []

for row in table.find_all('div', class_='search-result-description__item search-result-description__item_primary'):
cols = row.find_all('div', class_='search-result-item__head')

vacancies.append({
'title': cols[0].a.text,
})

for vacancy in vacancies:
out = re.sub(r'\\u2062', '', vacancy)
print(out)

def main():
parse(get_html(
'https://jobs.tut.by/search/vacancy?text=%D0%9B%D0%BE%D0%B3%D0%B8%D1%81%D1%82&only_with_salary=false&area=16&enable_snippets=true&clusters=true&salary='))

if __name__ == '__main__':
main()

Пишет
Парсинг/exp(title).py
Traceback (most recent call last):
File "C:/Users/Anton/PycharmProjects/Парсинг/experimental2(title).py", line 31, in <module>
main()
File "C:/Users/Anton/PycharmProjects/Парсинг/experimental2(title).py", line 28, in main
'https://jobs.tut.by/search/vacancy?text=%D0%9B%D0%BE%D0%B3%D0%B8%D1%81%D1%82&only_with_salary=false&area=16&enable_snippets=true&clusters=true&salary='))
File "C:/Users/Anton/PycharmProjects/Парсинг/experimental2(title).py", line 23, in parse
out = re.sub(r'\\u2062', '', vacancy)
File "C:\Users\Anton\AppData\Local\Programs\Python\Python36-32\lib\re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

Process finished with exit code 1
delvin-fil
Проверил. Правильно пишет, ибо тип byte и там так заменить нельзя.
Исправьте строку
 out = re.sub(r'\\u2062', '', str(vacancy))
Antonpython
Спасибо, что помогли, теперь все красиво)!
delvin-fil
Да всегда пожалуйста
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB