Как добавить словарь в ссылку? - PullRequest
0 голосов
/ 19 февраля 2019

Я готовлюсь отказаться от BS4 для своей школы и хочу извлечь содержимое словаря из якоря ссылки.Как извлечь содержимое словаря ctdata?

Ниже приведены подробности:

Ссылка: a ct="result_offer_content"

ctdata = {"ad_id_solr": "1a7d243c3610c62012159b7c9d4e900382bbe446", 
  "ad_id_mongo": "", "ad_segment_id": 1723, "ad_partner": "wizbii.com_premium",  
  "ad_sector": "Ing\u00e9nierie", "ad_subsector": "", 
  "ad_jobtitle": "Ing\u00e9nieur d\u00e9veloppeur", "ad_company": "SII",
  "ad_type": "exact", "ad_position": 1, "ad_locality": "Bordeaux"}

Я пробовал

for offers in soup.find_all("a", {'ct':'result_offer_content'}):
   offre = offers.find('ctdata')
   print(jobtitle)

, но вывод «Нет»Нет .... '

1 Ответ

0 голосов
/ 19 февраля 2019

Это будет читаться как json, так как он находится в структуре json.Я немного сбит с толку относительно того, на что ссылается jobtitle, поскольку вы не предоставили полный код.А также, поскольку здесь нет полного кода, я могу предложить только общее решение, поэтому вам нужно будет адаптировать его, но вы должны прочитать это следующим образом:

import json

json_str = '{"ad_id_solr":"1a7d243c3610c62012159b7c9d4e900382bbe446","ad_id_mongo":"","ad_segment_id":1723,"ad_partner":"wizbii.com_premium","ad_sector":"Ing\u00e9nierie","ad_subsector":"","ad_jobtitle":"Ing\u00e9nieur d\u00e9veloppeur","ad_company":"SII","ad_type":"exact","ad_position":1,"ad_locality":"Bordeaux"}'

json_dict = json.loads(json_str)

ДОПОЛНИТЕЛЬНО

Теперь, когда вы указали URL, я смог увидеть проблему.Вы хотите использовать .get(), а не .find для атрибута 'ctdata'

import json
import requests
import bs4


req = requests.get("https://www.jobijoba.com/fr/query/?what=data&where=Bordeaux&where_type=city%22")

soup = bs4.BeautifulSoup(req.text, 'html.parser')

offers = soup.find_all("a", {'ct':'result_offer_content'})

for offers in soup.find_all("a", {'ct':'result_offer_content'}):
    offre = offers.get('ctdata')

    json_dict = json.loads(offre)
    jobtitle = json_dict['ad_jobtitle']
    print (jobtitle)

Вывод:

Ingénieur développeur

Ingénieur développeur
Data Scientist
Data Scientist

Développeur big data


Data Scientist
Data Scientist

Ingénieur développeur
Data Scientist
Data Scientist
Data Scientist



Ingénieur décisionnel

Architecte
Data Scientist
Data Scientist
Data Scientist

Développeur informatique

Некоторые теги не имеютназвание работы с ним, так что вы можете пропустить их / не распечатать их, проверив, является ли название вакансии пустым:

import json
import requests
import bs4


req = requests.get("https://www.jobijoba.com/fr/query/?what=data&where=Bordeaux&where_type=city%22")

soup = bs4.BeautifulSoup(req.text, 'html.parser')

offers = soup.find_all("a", {'ct':'result_offer_content'})

for offers in soup.find_all("a", {'ct':'result_offer_content'}):
    offre = offers.get('ctdata')

    json_dict = json.loads(offre)
    jobtitle = json_dict['ad_jobtitle']
    if jobtitle != '':
        print (jobtitle)

Вывод:

Ingénieur développeur
Ingénieur développeur
Data Scientist
Data Scientist
Développeur big data
Data Scientist
Data Scientist
Ingénieur développeur
Data Scientist
Data Scientist
Data Scientist
Ingénieur décisionnel
Architecte
Data Scientist
Data Scientist
Data Scientist
Développeur informatique
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...