我希望s
是一本字典,然后我可以选择所需的信息,我尝试您的代码我有一个7862链接需要查找关键字和doi,但是我尝试了这个7862链接,发现其中一些不会获得我想要的信息并报告错误,那么您如何处理这种情况?这是我完整的代码。
我想我找到了重点。这是一个正则表达式错误。他指的是匹配部分。没有完全匹配的内容。例如,它可以匹配
,但这不起作用
代码在这里
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)