Я хочу, чтобы s
был словарём, затем я могу выбрать нужную информацию, я пробую ваш код. У меня есть ссылка 7862, нужно найти ключевое слово и doi, но эту ссылку 7862, которую я пытался найти, некоторые не будутполучить информацию, которую я хочу, и сообщить об ошибке, так как вы поступите об этой ситуации?Вот мой полный код.
Я думаю, что нашел его фокус.Это ошибка регулярного выражения.Он относится к соответствующей части.Точного совпадения нет.Например, это может соответствовать
https://ieeexplore.ieee.org/document/8479309
, но это не работает
https://ieeexplore.ieee.org/document/8613142
код здесь
import requests
from bs4 import BeautifulSoup
import json
import re
from elasticsearch import Elasticsearch
import random
import logging
from datetime import datetime
import time
ieee_content = requests.get(link, timeout=180)
soup = BeautifulSoup(ieee_content.text, 'xml')
tag = soup.find_all('script')
try:
metadata = "".join(re.findall('global.document.metadata=(.*)', tag[9].text)).replace(
";", '').replace('global.document.metadata=', '')
data = json.loads(metadata)
print('!')
except :
print('!@!@')
try:
doi = 'https://doi.org/' + ''.join(data['doi'])
links.append(doi)
except:
pass
try:
keywords = data["keywords"][0]['kwd']
except:
keywords = []
try:
date = datetime.strptime(data["journalDisplayDateOfPublication"], "%d %B %Y")
except:
pass
es.update(index='item', doc_type='ieee', id=esid,
body={'doc': {'links': links, 'keywords': keywords, "published": date}},
request_timeout=1900)
print('upload %s' % esid)